[Bug fortran/49213] [OOP] gfortran rejects structure constructor expression

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49213

--- Comment #21 from Dominique d'Humieres dominiq at lps dot ens.fr ---
The ICE for the test in comment 8 is now handled by PR64757.


[Bug c/64768] [4.8/4.9/5 Regression] internal compiler error: tree check: expected tree that contains ‘decl with RTL’ structure, have ‘field_decl’ in set_decl_rtl, at emit-rtl.c:1274

2015-01-24 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64768

--- Comment #6 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
On Sat, 24 Jan 2015, mpolacek at gcc dot gnu.org wrote:

 typedef int A[];
 struct { int i; A a; } a;

This is valid code for C99 and above / gnu89 (i.e., it's valid to use a 
typedef when declaring a flexible array member, whenever flexible array 
members are accepted).


[Bug fortran/64777] New: CO_BROADCAST: Finalization/dealloc of alloc components missing

2015-01-24 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64777

Bug ID: 64777
   Summary: CO_BROADCAST: Finalization/dealloc of alloc components
missing
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: burnus at gcc dot gnu.org
CC: pault at gcc dot gnu.org

For -fcoarray=lib (GFC_COARRAY_LIB), the A argument of CO_BROADCAST shall be
finalized and allocatable components freed, if this_image() != SOURCE_IMAGE.


[Bug c/64768] [4.8/4.9/5 Regression] internal compiler error: tree check: expected tree that contains ‘decl with RTL’ structure, have ‘field_decl’ in set_decl_rtl, at emit-rtl.c:1274

2015-01-24 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64768

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords|ice-on-invalid-code |ice-on-valid-code,
   ||rejects-valid

--- Comment #7 from Marek Polacek mpolacek at gcc dot gnu.org ---
(In reply to jos...@codesourcery.com from comment #6)
 On Sat, 24 Jan 2015, mpolacek at gcc dot gnu.org wrote:
 
  typedef int A[];
  struct { int i; A a; } a;
 
 This is valid code for C99 and above / gnu89 (i.e., it's valid to use a 
 typedef when declaring a flexible array member, whenever flexible array 
 members are accepted).

Yeah, initially I had the invalid testcase as in #c0, only then I discovered
that we ICE even on a valid testcase with a typedef.  Which means there are two
issues: a) we ICE, b) we don't accept a code where a flexible array member is a
typedef.  I'm adjusting the keywords now.


[Bug ipa/64776] New: FAIL: gcc.dg/ipa/pr64307.c (internal compiler error) on x86_64-apple-darwin14

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64776

Bug ID: 64776
   Summary: FAIL: gcc.dg/ipa/pr64307.c (internal compiler error)
on x86_64-apple-darwin14
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ipa
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dominiq at lps dot ens.fr
CC: fxcoudert at gcc dot gnu.org, howarth at bromo dot 
med.uc.edu,
iains at gcc dot gnu.org, marxin at gcc dot gnu.org
  Host: x86_64-apple-darwin14
Target: x86_64-apple-darwin14
 Build: x86_64-apple-darwin14

Compiling the test gcc.dg/ipa/pr64307.c on x86_64-apple-darwin14 gives the
following ICE

[Book15] f90/bug% gcc5 -S -O0 -fipa-icf
/opt/gcc/_clean/gcc/testsuite/gcc.dg/ipa/pr64307.c
/opt/gcc/_clean/gcc/testsuite/gcc.dg/ipa/pr64307.c: In function 'real_part':
/opt/gcc/_clean/gcc/testsuite/gcc.dg/ipa/pr64307.c:28:1: error: invalid
argument to gimple call
 }
 ^
a
# .MEM_2 = VDEF .MEM_1(D)
retval.0_3 = real_part_2 (a); [tail call]
/opt/gcc/_clean/gcc/testsuite/gcc.dg/ipa/pr64307.c:28:1: internal compiler
error: verify_gimple failed

The code compiles if gcc is configured with --enable-checking=release.


[Bug libffi/64779] New: libffi/src/x86/sysv.S:864: Error: junk at end of line, first unrecognized character is `@'

2015-01-24 Thread gerald at pfeifer dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64779

Bug ID: 64779
   Summary: libffi/src/x86/sysv.S:864: Error: junk at end of line,
first unrecognized character is `@'
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: critical
  Priority: P3
 Component: libffi
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gerald at pfeifer dot com
CC: rth at gcc dot gnu.org

Since the last set of libffi changes, for about 10 days, bootstrap
fails on i386-unknown-freebsd10.0:

libtool: compile:  /scratch2/tmp/gerald/OBJ-0124-0939/./gcc/xgcc
-B/scratch2/tmp
/gerald/OBJ-0124-0939/./gcc/
-B/home/gerald/gcc-ref10-i386/i386-unknown-freebsd1
0.1/bin/ -B/home/gerald/gcc-ref10-i386/i386-unknown-freebsd10.1/lib/ -isystem
/h
ome/gerald/gcc-ref10-i386/i386-unknown-freebsd10.1/include -isystem
/home/gerald
/gcc-ref10-i386/i386-unknown-freebsd10.1/sys-include -DHAVE_CONFIG_H -I.
-I/scra
tch2/tmp/gerald/gcc-HEAD/libffi -I.
-I/scratch2/tmp/gerald/gcc-HEAD/libffi/inclu
de -Iinclude -I/scratch2/tmp/gerald/gcc-HEAD/libffi/src -I.
-I/scratch2/tmp/gera
ld/gcc-HEAD/libffi/include -Iinclude -I/scratch2/tmp/gerald/gcc-HEAD/libffi/src
-g -O2 -MT src/x86/sysv.lo -MD -MP -MF src/x86/.deps/sysv.Tpo -c
/scratch2/tmp/g
erald/gcc-HEAD/libffi/src/x86/sysv.S  -fPIC -DPIC -o src/x86/.libs/sysv.o
/scratch2/tmp/gerald/gcc-HEAD/libffi/src/x86/sysv.S: Assembler messages:
/scratch2/tmp/gerald/gcc-HEAD/libffi/src/x86/sysv.S:864: Error: junk at end of
l
ine, first unrecognized character is `@'
/scratch2/tmp/gerald/gcc-HEAD/libffi/src/x86/sysv.S:886: Error: junk at end of
l
ine, first unrecognized character is `@'
/scratch2/tmp/gerald/gcc-HEAD/libffi/src/x86/sysv.S:898: Error: junk at end of
l
ine, first unrecognized character is `@'
/scratch2/tmp/gerald/gcc-HEAD/libffi/src/x86/sysv.S:910: Error: junk at end of
l
ine, first unrecognized character is `@'
/scratch2/tmp/gerald/gcc-HEAD/libffi/src/x86/sysv.S:938: Error: junk at end of
l
ine, first unrecognized character is `@'
/scratch2/tmp/gerald/gcc-HEAD/libffi/src/x86/sysv.S:950: Error: junk at end of
l
ine, first unrecognized character is `@'
/scratch2/tmp/gerald/gcc-HEAD/libffi/src/x86/sysv.S:964: Error: junk at end of
l
ine, first unrecognized character is `@'
/scratch2/tmp/gerald/gcc-HEAD/libffi/src/x86/sysv.S:983: Error: junk at end of
l
ine, first unrecognized character is `@'
/scratch2/tmp/gerald/gcc-HEAD/libffi/src/x86/sysv.S:1007: Error: junk at end of
line, first unrecognized character is `@'
Makefile:1177: recipe for target 'src/x86/sysv.lo' failed
gmake[4]: *** [src/x86/sysv.lo] Error 1
gmake[4]: Leaving directory
'/scratch2/tmp/gerald/OBJ-0124-0939/i386-unknown-fre
ebsd10.1/libffi'


[Bug ipa/64776] FAIL: gcc.dg/ipa/pr64307.c (internal compiler error) on x86_64-apple-darwin14

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64776

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-01-24
 Ever confirmed|0   |1

--- Comment #2 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Confirmed per comment 1.


[Bug libgcc/64598] var-tracking.c has internal compiler error

2015-01-24 Thread hayder.alkhalissi at googlemail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64598

--- Comment #10 from hayder.alkhalissi at googlemail dot com ---
Guys, I still need your help.


[Bug libfortran/64770] [5 Regression] Segmentation fault when opening a file with status=new and the file exists.

2015-01-24 Thread jb at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64770

Janne Blomqvist jb at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Janne Blomqvist jb at gcc dot gnu.org ---
Fixed on trunk, closing.


[Bug c/64778] New: ICE on invalid code on x86_64-linux-gnu: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in create_tmp_from_val, at gimplify.c:491

2015-01-24 Thread su at cs dot ucdavis.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64778

Bug ID: 64778
   Summary: ICE on invalid code on x86_64-linux-gnu: tree check:
expected class ‘type’, have ‘exceptional’ (error_mark)
in create_tmp_from_val, at gimplify.c:491
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: su at cs dot ucdavis.edu

The following (invalid) code causes an ICE when compiled with the current gcc
trunk on x86_64-linux-gnu. 

It is a regression from 4.9.x.

$ gcc-trunk -v
Using built-in specs.
COLLECT_GCC=gcc-trunk
COLLECT_LTO_WRAPPER=/usr/local/gcc-trunk/libexec/gcc/x86_64-unknown-linux-gnu/5.0.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-trunk/configure --prefix=/usr/local/gcc-trunk
--enable-languages=c,c++ --disable-werror --enable-multilib
Thread model: posix
gcc version 5.0.0 20150122 (experimental) [trunk revision 220011] (GCC) 

$ 
$ gcc-4.9 -c small.c
small.c: In function ‘foo’:
small.c:4:13: error: expected expression before ‘,’ token
   a ^= foo (,);
 ^
small.c:4:8: error: too many arguments to function ‘foo’
   a ^= foo (,);
^
small.c:1:5: note: declared here
 int foo (int p)
 ^
small.c:4: confused by earlier errors, bailing out
$ 
$ gcc-trunk -c small.c
small.c: In function ‘foo’:
small.c:4:13: error: expected expression before ‘,’ token
   a ^= foo (,);
 ^
small.c:4:8: error: too many arguments to function ‘foo’
   a ^= foo (,);
^
small.c:1:5: note: declared here
 int foo (int p)
 ^
small.c:4:8: internal compiler error: tree check: expected class ‘type’, have
‘exceptional’ (error_mark) in create_tmp_from_val, at gimplify.c:491
   a ^= foo (,);
^
0xce76c7 tree_class_check_failed(tree_node const*, tree_code_class, char
const*, int, char const*)
../../gcc-trunk/gcc/tree.c:9341
0x89cb90 tree_class_check(tree_node*, tree_code_class, char const*, int, char
const*)
../../gcc-trunk/gcc/tree.h:2969
0x89cb90 create_tmp_from_val
../../gcc-trunk/gcc/gimplify.c:491
0x89cb90 lookup_tmp_var
../../gcc-trunk/gcc/gimplify.c:527
0x89cb90 internal_get_tmp_var
../../gcc-trunk/gcc/gimplify.c:557
0x896299 get_initialized_tmp_var(tree_node*, gimple_statement_base**,
gimple_statement_base**)
../../gcc-trunk/gcc/gimplify.c:594
0x896299 gimplify_save_expr
../../gcc-trunk/gcc/gimplify.c:4882
0x896299 gimplify_expr(tree_node**, gimple_statement_base**,
gimple_statement_base**, bool (*)(tree_node*), int)
../../gcc-trunk/gcc/gimplify.c:8183
0x89a1f6 gimplify_stmt(tree_node**, gimple_statement_base**)
../../gcc-trunk/gcc/gimplify.c:5514
0x89a9f1 gimplify_compound_expr
../../gcc-trunk/gcc/gimplify.c:4837
0x897063 gimplify_expr(tree_node**, gimple_statement_base**,
gimple_statement_base**, bool (*)(tree_node*), int)
../../gcc-trunk/gcc/gimplify.c:7886
0x89a1f6 gimplify_stmt(tree_node**, gimple_statement_base**)
../../gcc-trunk/gcc/gimplify.c:5514
0x89738b gimplify_statement_list
../../gcc-trunk/gcc/gimplify.c:1483
0x89738b gimplify_expr(tree_node**, gimple_statement_base**,
gimple_statement_base**, bool (*)(tree_node*), int)
../../gcc-trunk/gcc/gimplify.c:8312
0x89a1f6 gimplify_stmt(tree_node**, gimple_statement_base**)
../../gcc-trunk/gcc/gimplify.c:5514
0x89afc5 gimplify_bind_expr
../../gcc-trunk/gcc/gimplify.c:1132
0x8957ac gimplify_expr(tree_node**, gimple_statement_base**,
gimple_statement_base**, bool (*)(tree_node*), int)
../../gcc-trunk/gcc/gimplify.c:8094
0x89a1f6 gimplify_stmt(tree_node**, gimple_statement_base**)
../../gcc-trunk/gcc/gimplify.c:5514
0x89ba7b gimplify_body(tree_node*, bool)
../../gcc-trunk/gcc/gimplify.c:9048
0x89c066 gimplify_function_tree(tree_node*)
../../gcc-trunk/gcc/gimplify.c:9202
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.
$ 





int foo (int p)
{
  int a; 
  a ^= foo (,);
  return a; 
}

[Bug ipa/64776] FAIL: gcc.dg/ipa/pr64307.c (internal compiler error) on x86_64-apple-darwin14

2015-01-24 Thread howarth at bromo dot med.uc.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64776

--- Comment #1 from howarth at bromo dot med.uc.edu ---
Backtraces as...

% lldb /sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/gcc/cc1   
 (lldb) target create
/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/gcc/cc1
Current executable set to
'/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/gcc/cc1' (x86_64).
(lldb) r -fpreprocessed pr64307.i -fPIC -quiet -dumpbase pr64307.c
-mmacosx-version-min=10.10.1 -m64 -mtune=core2 -auxbase-strip pr64307.s -O0
-version -fno-diagnostics-show-caret -fdiagnostics-color=never -fipa-icf
-fdump-ipa-icf -o pr64307.s
Process 86458 launched:
'/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/gcc/cc1' (x86_64)
GNU C11 (GCC) version 5.0.0 20150124 (experimental) (x86_64-apple-darwin14.1.0)
compiled by GNU C version 5.0.0 20150124 (experimental), GMP version 6.0.0,
MPFR version 3.1.2, MPC version 1.0.2
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU C11 (GCC) version 5.0.0 20150124 (experimental) (x86_64-apple-darwin14.1.0)
compiled by GNU C version 5.0.0 20150124 (experimental), GMP version 6.0.0,
MPFR version 3.1.2, MPC version 1.0.2
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: f59cc75aa297c9855565e65a45cb4437
/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150124/gcc/testsuite/gcc.dg/ipa/pr64307.c:
In function ‘real_part’:
/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150124/gcc/testsuite/gcc.dg/ipa/pr64307.c:28:1:
error: invalid argument to gimple call
a
# .MEM_2 = VDEF .MEM_1(D)
retval.0_3 = real_part_2 (a); [tail call]
/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150124/gcc/testsuite/gcc.dg/ipa/pr64307.c:28:1:
internal compiler error: verify_gimple failed
Process 86458 stopped
* thread #1: tid = 0x37ebcf, 0x7fff92ac5286
libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread',
stop reason = signal SIGABRT
frame #0: 0x7fff92ac5286 libsystem_kernel.dylib`__pthread_kill + 10
libsystem_kernel.dylib`__pthread_kill + 10:
- 0x7fff92ac5286:  jae0x7fff92ac5290; __pthread_kill + 20
   0x7fff92ac5288:  movq   %rax, %rdi
   0x7fff92ac528b:  jmp0x7fff92ac0c53; cerror_nocancel
   0x7fff92ac5290:  retq   
(lldb) bt
* thread #1: tid = 0x37ebcf, 0x7fff92ac5286
libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread',
stop reason = signal SIGABRT
  * frame #0: 0x7fff92ac5286 libsystem_kernel.dylib`__pthread_kill + 10
frame #1: 0x7fff8f61842f libsystem_pthread.dylib`pthread_kill + 90
frame #2: 0x7fff995feb53 libsystem_c.dylib`abort + 129
frame #3: 0x000100e24686
cc1`uw_init_context_1(context=0x7fff5fbfeb80, outer_cfa=0x7fff5fbfee30,
outer_ra=0x000100d88d75) + 134 at unwind-dw2.c:1563
frame #4: 0x000100e25258
cc1`_Unwind_Backtrace(trace=0x000100d88cd0,
trace_argument=0x7fff5fbfee30) + 56 at unwind.inc:283
frame #5: 0x000100d88d75 cc1`backtrace_full(state=unavailable,
skip=unavailable, callback=unavailable, error_callback=unavailable,
data=unavailable) + 53 at backtrace.c:106
frame #6: 0x000100d54703
cc1`diagnostic_action_after_output(context=0x000141577300,
diag_kind=unavailable) + 435 at diagnostic.c:529
frame #7: 0x000100d54943
cc1`diagnostic_report_diagnostic(context=0x000141577300,
diagnostic=0x7fff5fbfef00) + 483 at diagnostic.c:869
frame #8: 0x000100d55e9b cc1`internal_error(gmsgid=unavailable) + 235
at diagnostic.c:1240
frame #9: 0x0001009f881f
cc1`verify_gimple_in_cfg(fn=0x000143139e70, verify_nothrow=false) + 3167 at
tree-cfg.c:5069
frame #10: 0x0001008ccd3a
cc1`execute_function_todo(fn=0x000143139e70, data=unavailable) + 586 at
passes.c:1955
frame #11: 0x0001008cd4d2
cc1`do_per_function(callback=0x0001008ccaf0, data=0x0040) + 226
at passes.c:1654
frame #12: 0x0001008cd62e cc1`execute_todo(flags=64) + 302 at
passes.c:2012
frame #13: 0x0001008d00b1 cc1`execute_one_pass(pass=0x0001422133b0)
+ 481 at passes.c:2339
frame #14: 0x0001008d0c5a
cc1`execute_ipa_pass_list(pass=0x0001422133b0) + 154 at passes.c:2723
frame #15: 0x0001004cb0c7 cc1`symbol_table::compile() + 301 at
cgraphunit.c:2133
frame #16: 0x0001004caf9a
cc1`symbol_table::compile(this=0x000143005000) + 1226
frame #17: 0x0001004cd568
cc1`symbol_table::finalize_compilation_unit(this=0x000143005000) + 168 at
timevar.h:110
frame #18: 0x00010001baf9 cc1`c_write_global_declarations() + 361 at
c-decl.c:10789
frame #19: 0x0001009af63f cc1`compile_file + 143 at toplev.c:608
frame #20: 0x000100e931e7 cc1`toplev::main(int, char**) + 1288 at
toplev.c:2050
frame #21: 0x000100e92cdf cc1`toplev::main(this=unavailable, argc=20,
argv=0x7fff5fbff478) + 719
frame #22: 0x000100e93eac cc1`main(argc=unavailable,
argv=unavailable) + 44 at main.c:39

[Bug fortran/49213] [OOP] gfortran rejects structure constructor expression

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49213

--- Comment #23 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 The ICE on comment 9 does not occur any more with current trunk:

 gcc-Version 5.0.0 20150124 (experimental) [trunk revision 220084] (GCC)

Confirmed. I get the ICE with r219763 (2015-01-16), but not with r219772
(2015-01-16, with Andre's patch for pr60357:
https://gcc.gnu.org/ml/fortran/2015-01/msg00094.html).

Since there is no fortran commit in the range, it is likely fixed by the
Andre's patch.


[Bug target/64368] [5 Regression] Several libstdc++ test failures on non-linux platforms after r218964.

2015-01-24 Thread howarth at bromo dot med.uc.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64368

--- Comment #17 from howarth at bromo dot med.uc.edu ---
For the failure of the 22_locale/locale/cons/6.cc execution test on darwin14,
it traces as...

% fsf-gdb ./11.exe  
GNU gdb (GDB) 7.8.2
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type show copying
and show warranty for details.
This GDB was configured as x86_64-apple-darwin14.1.0.
Type show configuration for configuration details.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type help.
Type apropos word to search for commands related to word...
Reading symbols from ./11.exe...Reading symbols from
/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/x86_64-apple-darwin14.1.0/libstdc++-v3/testsuite/11.exe.dSYM/Contents/Resources/DWARF/11.exe...done.
done.
(gdb) break main
Breakpoint 1 at 0x3860: file
/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150124/libstdc++-v3/testsuite/22_locale/num_get/get/char/11.cc,
line 104.
(gdb) r
Starting program:
/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/x86_64-apple-darwin14.1.0/libstdc++-v3/testsuite/11.exe
 
warning: Could not open OSO archive file
/BinaryCache/corecrypto/corecrypto-233.1.2~26/Symbols/BuiltProducts/libcorecrypto_static.a
warning:
`/BinaryCache/coreTLS/coreTLS-35.1.2~2/Objects/coretls.build/coretls.build/Objects-normal/i386/system_coretls_vers.o':
can't open to read symbols: No such file or directory.
warning: Could not open OSO archive file
/BinaryCache/coreTLS/coreTLS-35.1.2~2/Symbols/BuiltProducts/libcoretls_ciphersuites.a
warning: Could not open OSO archive file
/BinaryCache/coreTLS/coreTLS-35.1.2~2/Symbols/BuiltProducts/libcoretls_handshake.a
warning: Could not open OSO archive file
/BinaryCache/coreTLS/coreTLS-35.1.2~2/Symbols/BuiltProducts/libcoretls_record.a
warning: Could not open OSO archive file
/BinaryCache/coreTLS/coreTLS-35.1.2~2/Symbols/BuiltProducts/libcoretls_stream_parser.a

Breakpoint 1, main () at
/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150124/libstdc++-v3/testsuite/22_locale/num_get/get/char/11.cc:104
104{
(gdb) s
105  test01();
(gdb) s
test01 () at
/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/x86_64-apple-darwin14.1.0/i386/libstdc++-v3/include/bits/basic_ios.h:462
462_M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)
(gdb) s
40{
(gdb) s
462_M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)
(gdb) s
40{
(gdb) s
462_M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)
(gdb) s
warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)

0x94e20420 in dyld_stub_binder () from /usr/lib/system/libdyld.dylib
(gdb) s
Single stepping until exit from function dyld_stub_binder,
which has no line number information.
warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)

0x94e20440 in misaligned_stack_error_ () from /usr/lib/system/libdyld.dylib
(gdb) s
Single stepping until exit from function misaligned_stack_error_,
which has no line number information.
warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)

0x94e20458 in dyld_stub_binder_ () from /usr/lib/system/libdyld.dylib
(gdb) s
Single stepping until exit from function dyld_stub_binder_,
which has no line number information.
std::ios_base::ios_base (this=0xb49c) at
../../../../../../gcc-5-20150124/libstdc++-v3/src/c++11/ios.cc:76
76  ios_base::ios_base() throw()
(gdb) s
11.exe(40298,0xa07ed1d4) malloc: *** error for object 0xc5a1e: pointer being
freed was not allocated
*** set a breakpoint in malloc_error_break to debug

Program received signal SIGABRT, Aborted.
0x94e3c69a in __pthread_kill () from /usr/lib/system/libsystem_kernel.dylib


[Bug libfortran/64770] [5 Regression] Segmentation fault when opening a file with status=new and the file exists.

2015-01-24 Thread jb at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64770

--- Comment #2 from Janne Blomqvist jb at gcc dot gnu.org ---
Author: jb
Date: Sat Jan 24 21:52:34 2015
New Revision: 220086

URL: https://gcc.gnu.org/viewcvs?rev=220086root=gccview=rev
Log:
PR libfortran/64770 Segfault when trying to open existing file with
status=new.

libgfortran ChangeLog:

2015-01-24  Janne Blomqvist  j...@gcc.gnu.org

PR libfortran/64770
* io/unit.c (filename_from_unit): Check that u-filename != NULL
before calling strdup.

testsuite ChangeLog:

2015-01-24  Janne Blomqvist  j...@gcc.gnu.org

PR libfortran/64770
* gfortran.dg/open_new_segv.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/open_new_segv.f90
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/libgfortran/ChangeLog
trunk/libgfortran/io/unit.c


[Bug rtl-optimization/64311] ICE: Max. number of generated reload insns per insn is achieved (90) with -fpic -march=corei7 for gcc.target/i386/avx512bw-vpbroadcast[bw]-1.c

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64311

--- Comment #3 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Still present at r220081.


[Bug fortran/49213] [OOP] gfortran rejects structure constructor expression

2015-01-24 Thread janus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49213

--- Comment #22 from janus at gcc dot gnu.org ---
The ICE on comment 9 does not occur any more with current trunk:

gcc-Version 5.0.0 20150124 (experimental) [trunk revision 220084] (GCC)


[Bug fortran/56867] Missing temporary with string array assignment

2015-01-24 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56867

--- Comment #10 from Thomas Koenig tkoenig at gcc dot gnu.org ---
Author: tkoenig
Date: Sat Jan 24 21:30:15 2015
New Revision: 220085

URL: https://gcc.gnu.org/viewcvs?rev=220085root=gccview=rev
Log:
2015-01-24  Thomas Koenig  tkoe...@gcc.gnu.org

PR fortran/56867
* trans-array.c (gfc_conv_resolve_dependencies):  Also check
dependencies when there may be substrings of character arrays.

2015-01-24  Thomas Koenig  tkoe...@gcc.gnu.org

PR fortran/56867
* gfortran.dg/dependency_45.f90:  New test.


Added:
branches/gcc-4_8-branch/gcc/testsuite/gfortran.dg/dependency_45.f90
Modified:
branches/gcc-4_8-branch/gcc/fortran/ChangeLog
branches/gcc-4_8-branch/gcc/fortran/trans-array.c
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog


[Bug libfortran/64770] [5 Regression] Segmentation fault when opening a file with status=new and the file exists.

2015-01-24 Thread jb at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64770

Janne Blomqvist jb at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2015-01-24
   Assignee|unassigned at gcc dot gnu.org  |jb at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Janne Blomqvist jb at gcc dot gnu.org ---
Confirmed.

Running the testcase under gdb gives the following backtrace:

#0  0x00446a5a in strlen ()
#1  0x0044699e in strdup ()
#2  0x00404eac in _gfortrani_filename_from_unit (n=optimized out) at
../../../trunk-git/libgfortran/io/unit.c:833
#3  0x0040266f in _gfortrani_show_locus (cmp=0x7fffd2d0) at
../../../trunk-git/libgfortran/runtime/error.c:266
#4  0x00402c10 in _gfortrani_generate_error
(cmp=cmp@entry=0x7fffd2d0, family=family@entry=5000, 
message=message@entry=0x6f7b60 'File \'test.dat\' already exists\000') at
../../../trunk-git/libgfortran/runtime/error.c:561
#5  0x00403d43 in _gfortrani_new_unit (opp=opp@entry=0x7fffd2d0,
u=u@entry=0x6f7ca0, flags=flags@entry=0x7fffd270)
at ../../../trunk-git/libgfortran/io/open.c:533
#6  0x00403fde in already_open (flags=optimized out, u=optimized
out, opp=optimized out) at ../../../trunk-git/libgfortran/io/open.c:694
#7  _gfortran_st_open (opp=0x7fffd2d0) at
../../../trunk-git/libgfortran/io/open.c:859
#8  0x00401175 in pr64770 () at pr64770-open_new_segv.f90:4
#9  0x004011e4 in main (argc=1, argv=0x7fffd929) at
pr64770-open_new_segv.f90:7
#10 0x0042562c in __libc_start_main ()
#11 0x00400fe7 in _start ()

unit.c:833 is

  /* Get the filename.  */
  if (u != NULL)
return strdup (u-filename);  // - Line 833
  else
return (char *) NULL;

I suspect changing the test to

  if (u != NULL  u-filename != NULL)

should fix it.


[Bug fortran/32834] [Meta-bug] 'Fortran 95'-only failures

2015-01-24 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32834
Bug 32834 depends on bug 56867, which changed state.

Bug 56867 Summary: Missing temporary with string array assignment
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56867

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED


[Bug fortran/56867] Missing temporary with string array assignment

2015-01-24 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56867

Thomas Koenig tkoenig at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #11 from Thomas Koenig tkoenig at gcc dot gnu.org ---
Fixed on all affected branches.


[Bug target/64782] -mcpu=native should be supported on aarch64

2015-01-24 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64782

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 Depends on||64784

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
-mcpu=native should select the native arch also.


[Bug target/64784] New: -march=native should be supported

2015-01-24 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64784

Bug ID: 64784
   Summary: -march=native should be supported
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: pinskia at gcc dot gnu.org
Target: aarch64

Like -mcpu=native, we should support -march=native too.  This selects the
native arch (armv8 or armv8.1) plus turns on the extensions which are supported
like ASE, CRC, etc.


[Bug jit/64780] New: toplevel configure should reject jit as a language if --enable-host-shared is not supplied

2015-01-24 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64780

Bug ID: 64780
   Summary: toplevel configure should reject jit as a language if
--enable-host-shared is not supplied
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Keywords: build
  Severity: normal
  Priority: P3
 Component: jit
  Assignee: dmalcolm at gcc dot gnu.org
  Reporter: pinskia at gcc dot gnu.org

When I was going to test the JIT front-end but since I did not read the
documentation, I did not know I need to configure with --enable-host-shared.

I think it would be a good idea to either default to --enable-host-shared when
jit is a language or have the toplevel configure reject jit as language if
--enable-host-shared is not supplied.


[Bug target/64783] New: -march=armv8.1-a should be supported

2015-01-24 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64783

Bug ID: 64783
   Summary: -march=armv8.1-a should be supported
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: pinskia at gcc dot gnu.org

Since 8.1 was announced [1] support for -march=armv8.1-a should be done


[1]
http://community.arm.com/groups/processors/blog/2014/12/02/the-armv8-a-architecture-and-its-ongoing-development


[Bug libstdc++/64781] New: regex out-of-range submatches should represent an unmatched sub-expression

2015-01-24 Thread kaballo86 at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64781

Bug ID: 64781
   Summary: regex out-of-range submatches should represent an
unmatched sub-expression
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: kaballo86 at hotmail dot com

The following snippet fails with a runtime assertion:

#include regex
#include cassert

int main() {
  std::match_resultsconst char* m;
  const char s[] = a;
  assert(std::regex_search(s, m, std::regex(a)));

  assert(m.size() == 1);

  assert(m[0].first == s+0);
  assert(m[0].second == s+1);
  assert(m[0].matched == true);

  assert(m[42].first == s+1); // fires
  assert(m[42].second == s+1); // fires
  assert(m[42].matched == false);
}

28.10.4 [re.results.acc]/8 says If `n = size()` then returns a `sub_match`
object representing an unmatched sub-expression.

While the term unmatched sub-expression does not appear anywhere else in the
standard, this is presumably 28.10 [re.results]/4 If the sub-expression `n`
participated in a regular expression match then the `sub_match` member
`matched` evaluates to `true`, and members `first` and `second` denote the
range of characters `[first,second)` which formed that match. Otherwise
`matched` is `false`, and members `first` and `second` point to the end of the
sequence that was searched.

According to that, `m[n].first == m[n].last == s+1` should hold for `n = 1`.


[Bug target/64782] New: -mcpu=native should be supported on aarch64

2015-01-24 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64782

Bug ID: 64782
   Summary: -mcpu=native should be supported on aarch64
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: pinskia at gcc dot gnu.org

Now we have some different CPU supported on AARCH64. We should support
-mcpu=native.  We might need some information from the kernel which is not
supplied yet.


[Bug fortran/64773] [F2008] Not packing arrays with changing variable used for size in block

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64773

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-01-24
 Ever confirmed|0   |1

--- Comment #2 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Confirmed.


[Bug c/64778] [4.9/5 Regression] ICE on invalid code on x86_64-linux-gnu: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in create_tmp_from_val, at gimplify.c:491

2015-01-24 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64778

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-01-24
 CC||mpolacek at gcc dot gnu.org
   Target Milestone|--- |4.9.3
Summary|ICE on invalid code on  |[4.9/5 Regression] ICE on
   |x86_64-linux-gnu: tree  |invalid code on
   |check: expected class   |x86_64-linux-gnu: tree
   |‘type’, have ‘exceptional’  |check: expected class
   |(error_mark) in |‘type’, have ‘exceptional’
   |create_tmp_from_val, at |(error_mark) in
   |gimplify.c:491  |create_tmp_from_val, at
   ||gimplify.c:491
 Ever confirmed|0   |1

--- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org ---
Confirmed.

[Bug libitm/52482] libitm INVALID MNEMONIC in .S (powerpc asm)

2015-01-24 Thread venture37 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52482

--- Comment #10 from venture37 at gmail dot com ---
G4 with a 32bit ppc7450 CPU, running OS X Tiger 10.4.11 with Xcode 2.5 (GCC
4.0.1)
Cloned git repo  configured source 

Configured it with the following flags (taken from config.log)
./configure --enable-languages=c --enable-shared --enable-long-long
--with-local-prefix=/Users/myusr/SandBox/gcc-trunk --enable-libssp
--enable-threads=posix STRIP_FOR_TARGET=/usr/bin/strip --with-dwarf2
--disable-libitm --disable-nls --with-gmp=/Users/myusr/pkg
--with-mpc=/Users/myusr/pkg --with-mpfr=/Users/myusr/pkg
--with-os-directory=darwin --with-arch-directory=powerpc --with-system-zlib
--enable-__cxa_atexit
--with-gxx-include-dir=/Users/myusr/pkg/gcc49/include/c++/
--prefix=/Users/myusr/SandBox/gcc-trunk --build=powerpc-apple-darwin8
--host=powerpc-apple-darwin8 --infodir=/Users/myusr/SandBox/gcc-trunk/info
--mandir=/Users/myusr/SandBox/gcc-trunk/man

System had dependencies installed for GCC 4.9 installed via pkgsrc.

Ran make
Build fails at
echo timestamp  s-genrtl-h
/Users/myusr/Sandbox/gcc/host-powerpc-apple-darwin8/prev-gcc/xg++
-B/Users/myusr/Sandbox/gcc/host-powerpc-apple-darwin8/prev-gcc/
-B/Users/myusr/SandBox/gcc-trunk/powerpc-apple-darwin8/bin/ -nostdinc++
-B/Users/myusr/Sandbox/gcc/prev-powerpc-apple-darwin8/libstdc++-v3/src/.libs
-B/Users/myusr/Sandbox/gcc/prev-powerpc-apple-darwin8/libstdc++-v3/libsupc++/.libs

-I/Users/myusr/Sandbox/gcc/prev-powerpc-apple-darwin8/libstdc++-v3/include/powerpc-apple-darwin8
 -I/Users/myusr/Sandbox/gcc/prev-powerpc-apple-darwin8/libstdc++-v3/include 
-I/Users/myusr/Sandbox/gcc/libstdc++-v3/libsupc++
-L/Users/myusr/Sandbox/gcc/prev-powerpc-apple-darwin8/libstdc++-v3/src/.libs
-L/Users/myusr/Sandbox/gcc/prev-powerpc-apple-darwin8/libstdc++-v3/libsupc++/.libs
-c   -g -O2 -mdynamic-no-pic -gtoggle -DIN_GCC-fno-exceptions -fno-rtti
-fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings
-Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic
-Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common
 -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I../.././gcc -I../.././gcc/build
-I../.././gcc/../include  -I../.././gcc/../libcpp/include  \
-o build/rtl.o ../.././gcc/rtl.c
../.././gcc/rtl.c: In function 'void cwi_output_hex(FILE*, const_rtx)':
../.././gcc/rtl.c:240:62: error: ISO C++98 does not support the 'q' gnu_printf
length modifier [-Werror=format=]
   fprintf (outfile, HOST_WIDE_INT_PRINT_HEX, CWI_ELT (x, --i));
  ^
../.././gcc/rtl.c:242:69: error: ISO C++98 does not support the 'q' gnu_printf
length modifier [-Werror=format=]
 fprintf (outfile, HOST_WIDE_INT_PRINT_PADDED_HEX, CWI_ELT (x, i));
 ^
cc1plus: all warnings being treated as errors
make[3]: *** [build/rtl.o] Error 1

Also noticed that the compiler flags default to -m64 which won't work on a
32bit PowerPC host.


[Bug libfortran/64770] [5 Regression] Segmentation fault when opening a file with status=new and the file exists.

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64770

--- Comment #4 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 Fixed on trunk, closing.

Thanks!


[Bug fortran/64771] [4.9/5 Regression] ICE(segfault) when passing coarrays around; ICE in gfc_zero_size_array in arith.c:1637

2015-01-24 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64771

--- Comment #5 from Tobias Burnus burnus at gcc dot gnu.org ---
Created attachment 34567
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34567action=edit
Draft patch


[Bug c++/64767] Could GCC warn when a pointer is compared against '\0'?

2015-01-24 Thread ulfalizer at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64767

--- Comment #2 from Ulf Magnusson ulfalizer at gmail dot com ---
Looks like -Wnon-literal-null-conversion is intended to warn for the comparison
case too, though it doesn't seem to be implemented yet as of clang 3.4:
http://llvm.org/klaus/clang/commit/50800fc551ac6b8a95cca662223e7f061bbd169a/


[Bug fortran/57023] [4.8 Regression] Not packing arrays with changing variable used for size

2015-01-24 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57023

--- Comment #9 from Thomas Koenig tkoenig at gcc dot gnu.org ---
Author: tkoenig
Date: Sat Jan 24 15:20:56 2015
New Revision: 220082

URL: https://gcc.gnu.org/viewcvs?rev=220082root=gccview=rev
Log:
2015-01-24  Thomas Koenig  tkoe...@netcologne.de

Backport from trunk
PR fortran/57023
* dependency.c (callback_dummy_intent_not_int):  New function.
(dummy_intent_not_in):  New function.
(gfc_full_array_ref_p):  Use dummy_intent_not_in.

2015-01-24  Thomas Koenig  tkoe...@netcologne.de

Backport from trunk
PR fortran/57023
* gfortran.dg/internal_pack_15.f90:  New test.


Modified:
branches/gcc-4_8-branch/gcc/fortran/ChangeLog
branches/gcc-4_8-branch/gcc/fortran/dependency.c
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog


[Bug fortran/57023] [4.8 Regression] Not packing arrays with changing variable used for size

2015-01-24 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57023

Thomas Koenig tkoenig at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #10 from Thomas Koenig tkoenig at gcc dot gnu.org ---
Fixed on all open branches, closing.


[Bug fortran/32834] [Meta-bug] 'Fortran 95'-only failures

2015-01-24 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32834
Bug 32834 depends on bug 57023, which changed state.

Bug 57023 Summary: [4.8 Regression] Not packing arrays with changing variable 
used for size
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57023

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED


[Bug fortran/64773] New: [F2008]

2015-01-24 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64773

Bug ID: 64773
   Summary: [F2008]
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: tkoenig at gcc dot gnu.org

This is inspired by PR 57023, but it is a pure F2008 error, hence a separate
PR.

program main
  integer :: n
  n = 5
  block
integer, dimension(n, n) :: a
a = 0
n = n - 1
call baz(a, n)
print '(5I2)',a
  end block
contains
  subroutine baz(a, i)
integer, intent(in) :: i
integer, dimension(i,i), intent(inout) :: a
a = 1
  end subroutine baz
end program main

ig25@linux-fd1f:~/Krempel/Block gfortran block.f90
ig25@linux-fd1f:~/Krempel/Block ./a.out
 1 1 1 1 1
 1 1 1 1 1
 1 1 1 1 1
 1 0 0 0 0
 0 0 0 0 0


[Bug c++/64767] Could GCC warn when a pointer is compared against '\0'?

2015-01-24 Thread ulfalizer at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64767

--- Comment #3 from Ulf Magnusson ulfalizer at gmail dot com ---
clang also generates a warning for C programs with void *a = '\0' by the way,
so it seems to be able to look at the form of the integral constant there.


[Bug fortran/64773] [F2008] Not packing arrays with changing variable used for size in block

2015-01-24 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64773

Thomas Koenig tkoenig at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||wrong-code
Summary|[F2008] |[F2008] Not packing arrays
   ||with changing variable used
   ||for size in block

--- Comment #1 from Thomas Koenig tkoenig at gcc dot gnu.org ---
Makes more sense with a descriptive subject :-)


[Bug target/64774] New: [ARM/thumb] missed optimization: pc relative ldr used when constant can be derived from register

2015-01-24 Thread bruck.michael at googlemail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64774

Bug ID: 64774
   Summary: [ARM/thumb] missed optimization: pc relative ldr used
when constant can be derived from register
   Product: gcc
   Version: 4.9.3
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: bruck.michael at googlemail dot com

In the example the second write address of each function can either be
generated using 'str' with an immediate offset or using an adds with an
immediate addend.

The compiler does this for test1-3. For test4-6 it emits a pc-relative ldr
instruction and a 32bit constant. This increases size and likely impacts
execution speed.

cat test.c
void test1()
{
*(unsigned *)4 = 0x666;
*(unsigned *)(4 + 4) = 0x666;
}


void test2()
{
*(unsigned *)4 = 0x666;
*(unsigned *)(4 + 128) = 0x666;
}

void test3()
{
*(unsigned *)0x444 = 0x666;
*(unsigned *)(0x444 + 4) = 0x666;
}


void test4()
{
*(unsigned *)0x444 = 0x666;
*(unsigned *)(0x444 + 128) = 0x666;
}

void test5()
{
*(unsigned *)0x = 0x666;
*(unsigned *)(0x + 4) = 0x666;
}


void test6()
{
*(unsigned *)0x = 0x666;
*(unsigned *)(0x + 128) = 0x666;
}

arm-none-eabi-gcc -c test.c -mthumb -mcpu=cortex-m0 -mtune=cortex-m0 -Ofast -o
test.o

 test1:
   0:2204  movsr2, #4
   2:4b02  ldrr3, [pc, #8]; (c test1+0xc)
   4:6013  strr3, [r2, #0]
   6:6053  strr3, [r2, #4]
   8:4770  bxlr
   a:46c0  nop; (mov r8, r8)
   c:0666 .word0x0666

0010 test2:
  10:2204  movsr2, #4
  12:4b02  ldrr3, [pc, #8]; (1c test2+0xc)
  14:6013  strr3, [r2, #0]
  16:3280  addsr2, #128; 0x80
  18:6013  strr3, [r2, #0]
  1a:4770  bxlr
  1c:0666 .word0x0666

0020 test3:
  20:4b02  ldrr3, [pc, #8]; (2c test3+0xc)
  22:4a03  ldrr2, [pc, #12]; (30 test3+0x10)
  24:6013  strr3, [r2, #0]
  26:6053  strr3, [r2, #4]
  28:4770  bxlr
  2a:46c0  nop; (mov r8, r8)
  2c:0666 .word0x0666
  30:0444 .word0x0444

0034 test4:
  34:4b02  ldrr3, [pc, #8]; (40 test4+0xc)
  36:4a03  ldrr2, [pc, #12]; (44 test4+0x10)
  38:6013  strr3, [r2, #0]
  3a:4a03  ldrr2, [pc, #12]; (48 test4+0x14)
  3c:6013  strr3, [r2, #0]
  3e:4770  bxlr
  40:0666 .word0x0666
  44:0444 .word0x0444
  48:04c4 .word0x04c4

004c test5:
  4c:4b02  ldrr3, [pc, #8]; (58 test5+0xc)
  4e:4a03  ldrr2, [pc, #12]; (5c test5+0x10)
  50:6013  strr3, [r2, #0]
  52:4a03  ldrr2, [pc, #12]; (60 test5+0x14)
  54:6013  strr3, [r2, #0]
  56:4770  bxlr
  58:0666 .word0x0666
  5c: .word0x
  60:4448 .word0x4448

0064 test6:
  64:4b02  ldrr3, [pc, #8]; (70 test6+0xc)
  66:4a03  ldrr2, [pc, #12]; (74 test6+0x10)
  68:6013  strr3, [r2, #0]
  6a:4a03  ldrr2, [pc, #12]; (78 test6+0x14)
  6c:6013  strr3, [r2, #0]
  6e:4770  bxlr
  70:0666 .word0x0666
  74: .word0x
  78:44c4 .word0x44c4


Compiled using:
https://launchpad.net/gcc-arm-embedded/4.9/4.9-2014-q4-major/+download/gcc-arm-none-eabi-4_9-2014q4-20141203-win32.exe


[Bug c++/64767] Could GCC warn when a pointer is compared against '\0'?

2015-01-24 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64767

--- Comment #4 from Jonathan Wakely redi at gcc dot gnu.org ---
Yes, although C says '\0' has type int the compiler can still distinguish the
token '\0' from 0 during compilation.


[Bug c/64765] New: [OpenACC] Bogus 'copy' is not valid for '#pragma acc kernels loop'

2015-01-24 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64765

Bug ID: 64765
   Summary: [OpenACC] Bogus 'copy' is not valid for '#pragma acc
kernels loop'
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Keywords: openacc, rejects-valid
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: burnus at gcc dot gnu.org
CC: tschwinge at gcc dot gnu.org

The following program gives

foo.c:2:36: error: 'copy' is not valid for '#pragma acc kernels loop'
foo.c:2:26: error: 'create' is not valid for '#pragma acc kernels loop'
 #pragma acc kernels loop create(f) copy(r)
  ^

I believe copy and create are invalid for LOOP but they should be valid for
KERNELS - and, hence, also for KERNEL LOOPS. (The equivalent Fortran program
compiles.)


Test case:

void foo(float *f, double *r) {
#pragma acc kernels loop create(f) copy(r)
for(;;) {}
}


[Bug middle-end/64764] New: internal compiler error: in is_value_included_in, at tree-ssa-uninit.c:942

2015-01-24 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64764

Bug ID: 64764
   Summary: internal compiler error: in is_value_included_in, at
tree-ssa-uninit.c:942
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mpolacek at gcc dot gnu.org

./cc1 -quiet q.c -Wuninitialized -O
q.c: In function ‘fn2’:
q.c:14:1: internal compiler error: in is_value_included_in, at
tree-ssa-uninit.c:942
 fn2 ()
 ^
0xef6507 is_value_included_in
/home/marek/src/gcc/gcc/tree-ssa-uninit.c:942
0xefcc71 is_pred_expr_subset_of
/home/marek/src/gcc/gcc/tree-ssa-uninit.c:1387
0xefcc71 is_pred_chain_subset_of
/home/marek/src/gcc/gcc/tree-ssa-uninit.c:1412
0xefcc71 is_included_in
/home/marek/src/gcc/gcc/tree-ssa-uninit.c:1441
0xefcc71 is_superset_of
/home/marek/src/gcc/gcc/tree-ssa-uninit.c:1472
0xefcc71 is_use_properly_guarded
/home/marek/src/gcc/gcc/tree-ssa-uninit.c:2242
0xefd95f find_uninit_use
/home/marek/src/gcc/gcc/tree-ssa-uninit.c:2285
0xefd95f warn_uninitialized_phi
/home/marek/src/gcc/gcc/tree-ssa-uninit.c:2351
0xefd95f execute
/home/marek/src/gcc/gcc/tree-ssa-uninit.c:2461
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.


int a, l, m;
float *b;
float c, d, e, g, h;
unsigned char i, k;
void
fn1 (int p1, float *f1, float *f2, float *f3, unsigned char *c1, float *f4,
 unsigned char *c2, float *p10)
{
  if (p1  8)
b[3] = p10[a];
}

void
fn2 ()
{
  float *n;
  if (l  6)
n = c + m;
  fn1 (l, d, e, g, i, h, k, n);
}

[Bug middle-end/64764] [5 Regression] internal compiler error: in is_value_included_in, at tree-ssa-uninit.c:942

2015-01-24 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64764

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |5.0
Summary|internal compiler error: in |[5 Regression] internal
   |is_value_included_in, at|compiler error: in
   |tree-ssa-uninit.c:942   |is_value_included_in, at
   ||tree-ssa-uninit.c:942


[Bug middle-end/64764] [5 Regression] internal compiler error: in is_value_included_in, at tree-ssa-uninit.c:942

2015-01-24 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64764

--- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org ---
Started with r219739.


[Bug middle-end/64766] New: internal compiler error: tree check: expected block, have error_mark in lower_function_body, at gimple-low.c:122

2015-01-24 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64766

Bug ID: 64766
   Summary: internal compiler error: tree check: expected block,
have error_mark in lower_function_body, at
gimple-low.c:122
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mpolacek at gcc dot gnu.org

./cc1 -quiet ice1.c
ice1.c:6:1: error: function ‘fn1’ is initialized like a variable
 void fn1 () =
 ^
ice1.c:6:1: error: expected expression at end of input
ice1.c: In function ‘fn1’:
ice1.c:2:1: internal compiler error: tree check: expected block, have
error_mark in lower_function_body, at gimple-low.c:122
 fn1 ()
 ^
0xface14 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
/home/marek/src/gcc/gcc/tree.c:9290
0x14f37fb tree_check
/home/marek/src/gcc/gcc/tree.h:2846
0x14f37fb lower_function_body
/home/marek/src/gcc/gcc/gimple-low.c:122
0x14f37fb execute
/home/marek/src/gcc/gcc/gimple-low.c:205
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.

void
fn1 ()
{
}

void fn1 () =

[Bug c++/64767] New: Could GCC warn when a pointer is compared against '\0'?

2015-01-24 Thread ulfalizer at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64767

Bug ID: 64767
   Summary: Could GCC warn when a pointer is compared against
'\0'?
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ulfalizer at gmail dot com

This would detect e.g. ptr == '\0' when *ptr == '\0' was intended, which could
be very dangerous (and just bit me).

This might be tricky to implement in C since '\0' has type int and comparing a
pointer against 0 is common. In C++ it has type char, so maybe a warning could
be generated for ptr == (char)0 there.

Thoughts?


[Bug c/64762] New: [OpenACC] Bogus expected '#pragma acc' clause before 'independent'

2015-01-24 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64762

Bug ID: 64762
   Summary: [OpenACC] Bogus expected '#pragma acc' clause before
'independent'
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Keywords: openacc, rejects-valid
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: burnus at gcc dot gnu.org
CC: tschwinge at gcc dot gnu.org

The following program gives:

foo1.c:4:18: error: expected '#pragma acc' clause before 'independent'
 #pragma acc loop independent
  ^

An equivalent Fortran program compiles successfully, it works with other
compilers and looking at the standard, it also should be valid.


void foo(void) {
#pragma acc kernels
 {
#pragma acc loop independent
  for (int i=1; i = 5; ++i)
{
}
 }
}


[Bug fortran/60922] [4.9/5 Regression] Memory leak with allocatable CLASS components

2015-01-24 Thread janus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60922

--- Comment #13 from janus at gcc dot gnu.org ---
Author: janus
Date: Sat Jan 24 10:11:52 2015
New Revision: 220078

URL: https://gcc.gnu.org/viewcvs?rev=220078root=gccview=rev
Log:
2015-01-24  Janus Weil  ja...@gcc.gnu.org

Backport from mainline
PR fortran/60922
* class.c (finalize_component): Apply the check for 'fini_coarray' only
to coarray components.

2015-01-24  Janus Weil  ja...@gcc.gnu.org

Backport from mainline
PR fortran/60922
* gfortran.dg/class_allocate_17.f90: New.

Added:
branches/gcc-4_9-branch/gcc/testsuite/gfortran.dg/class_allocate_17.f90
Modified:
branches/gcc-4_9-branch/gcc/fortran/ChangeLog
branches/gcc-4_9-branch/gcc/fortran/class.c
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog


[Bug c++/64759] The compiler does NOT show a warning in a case where it is reasonable to expect a warning message.

2015-01-24 Thread sch...@linux-m68k.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64759

--- Comment #3 from Andreas Schwab sch...@linux-m68k.org ---
How often does that occur in real life?


[Bug fortran/64763] New: [OpenACC] !$acc region not implemented

2015-01-24 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64763

Bug ID: 64763
   Summary: [OpenACC] !$acc region not implemented
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Keywords: openacc, rejects-valid
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: burnus at gcc dot gnu.org
CC: cesar at codesourcery dot com, tschwinge at gcc dot gnu.org

The 2.13.1 Routine Directive is not implemented in the Fortran FE, it works
in the C front end:

 !$acc region
  1
Error: Unclassifiable OpenACC directive at (1)


Testcase:

!$acc region
  do
  end do
!$acc end region
end


[Bug fortran/60922] [4.9/5 Regression] Memory leak with allocatable CLASS components

2015-01-24 Thread janus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60922

janus at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #14 from janus at gcc dot gnu.org ---
Fixed on trunk and 4.9. Closing.

Thanks for the report!


[Bug c/64768] New: internal compiler error: tree check: expected tree that contains ‘decl with RTL’ structure, have ‘field_decl’ in set_decl_rtl, at emit-rtl.c:1274

2015-01-24 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64768

Bug ID: 64768
   Summary: internal compiler error: tree check: expected tree
that contains ‘decl with RTL’ structure, have
‘field_decl’ in set_decl_rtl, at emit-rtl.c:1274
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mpolacek at gcc dot gnu.org

./cc1 ice2.c
ice2.c:2:12: error: array size missing in ‘a’
 struct { A a;
^
ice2.c:2:8: internal compiler error: tree check: expected tree that contains
‘decl with RTL’ structure, have ‘field_decl’ in set_decl_rtl, at
emit-rtl.c:1274
 struct { A a;
^
0xfad59a tree_contains_struct_check_failed(tree_node const*,
tree_node_structure_enum, char const*, int, char const*)
/home/marek/src/gcc/gcc/tree.c:9462
0x672d2d contains_struct_check(tree_node*, tree_node_structure_enum, char
const*, int, char const*)
/home/marek/src/gcc/gcc/tree.h:2960
0x89dfd7 set_decl_rtl(tree_node*, rtx_def*)
/home/marek/src/gcc/gcc/emit-rtl.c:1274
0xca6a3c relayout_decl(tree_node*)
/home/marek/src/gcc/gcc/stor-layout.c:829
0x655c81 finish_decl(tree_node*, unsigned int, tree_node*, tree_node*,
tree_node*)
/home/marek/src/gcc/gcc/c/c-decl.c:4780
0x65d2f3 grokfield(unsigned int, c_declarator*, c_declspecs*, tree_node*,
tree_node**)
/home/marek/src/gcc/gcc/c/c-decl.c:7337
0x6b34d7 c_parser_struct_declaration
/home/marek/src/gcc/gcc/c/c-parser.c:2986
0x6b2e22 c_parser_struct_or_union_specifier
/home/marek/src/gcc/gcc/c/c-parser.c:2790
0x6b2070 c_parser_declspecs
/home/marek/src/gcc/gcc/c/c-parser.c:2402
0x6b02f3 c_parser_declaration_or_fndef
/home/marek/src/gcc/gcc/c/c-parser.c:1571
0x6b0109 c_parser_external_declaration
/home/marek/src/gcc/gcc/c/c-parser.c:1452
0x6afd1c c_parser_translation_unit
/home/marek/src/gcc/gcc/c/c-parser.c:1339
0x6d2ce1 c_parse_file()
/home/marek/src/gcc/gcc/c/c-parser.c:15416
0x72b672 c_common_parse_file()
/home/marek/src/gcc/gcc/c-family/c-opts.c:1052
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.


typedef int A[];
struct { A a;

[Bug target/64688] [5 Regression] internal compiler error: Max. number of generated reload insns per insn is achieved (90)

2015-01-24 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64688

--- Comment #9 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Created attachment 34563
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34563action=edit
unreduced testcase


[Bug c/64768] [4.8/4.9/5 Regression] internal compiler error: tree check: expected tree that contains ‘decl with RTL’ structure, have ‘field_decl’ in set_decl_rtl, at emit-rtl.c:1274

2015-01-24 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64768

--- Comment #3 from Marek Polacek mpolacek at gcc dot gnu.org ---
typedef int A[];
struct { A a; }

ICEs as well (right brace added).


[Bug tree-optimization/64769] New: ICE: tree check: expected integer_cst, have parm_decl in simd_clone_clauses_extract, at omp-low.c:12503 with -fopenmp-simd

2015-01-24 Thread zsojka at seznam dot cz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64769

Bug ID: 64769
   Summary: ICE: tree check: expected integer_cst, have parm_decl
in simd_clone_clauses_extract, at omp-low.c:12503 with
-fopenmp-simd
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: zsojka at seznam dot cz

Created attachment 34564
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34564action=edit
reduced testcase

Crashes only when compiled as C++.
Identical C code doesn't crash (or when '-x c' is passed).

Compiler output:
$ gcc -fopenmp-simd testcase.C 
testcase.C:5:1: internal compiler error: tree check: expected integer_cst, have
parm_decl in simd_clone_clauses_extract, at omp-low.c:12503
 }
 ^
0x104e20c tree_check_failed(tree_node const*, char const*, int, char const*,
...)
/mnt/svn/gcc-trunk/gcc/tree.c:9290
0x5b4284 tree_int_cst_elt_check(tree_node*, int, char const*, int, char const*)
/mnt/svn/gcc-trunk/gcc/tree.h:3046
0xcdcd4e tree_int_cst_elt_check(tree_node*, int, char const*, int, char const*)
/mnt/svn/gcc-trunk/gcc/tree.h:3049
0xcdcd4e simd_clone_clauses_extract
/mnt/svn/gcc-trunk/gcc/omp-low.c:12503
0xcdcd4e expand_simd_clones
/mnt/svn/gcc-trunk/gcc/omp-low.c:13488
0xcdcd4e ipa_omp_simd_clone
/mnt/svn/gcc-trunk/gcc/omp-low.c:13579
0xcdcd4e execute
/mnt/svn/gcc-trunk/gcc/omp-low.c:13607
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.

Tested revisions:
r219989 - ICE
4_9 r219040 - ICE
4_8 r219093 - unknown agrument -fopenmp-simd


[Bug libfortran/64770] New: [5 Regression] Segmentation fault when opening a file with status=new and the file exists.

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64770

Bug ID: 64770
   Summary: [5 Regression] Segmentation fault when opening a file
with status=new and the file exists.
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libfortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dominiq at lps dot ens.fr
CC: jb at gcc dot gnu.org, jvdelisle at gcc dot gnu.org

Executing the code

implicit none

open(99, file=test.dat, access=stream, form=unformatted, status=new)
close(99)

end

should give

At line 3 of file eof_4_red.f90 (unit = 99, file = '')
Fortran runtime error: File 'test.dat' already exists

if the file test.dat exists. This is the case for 4.9 and 5.0 up to revision
r215301 (2014-09-16). However from r215328 (2014-09-17) up to r220065, running
the test gives

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x10547d6c2
#1  0x10547c9e0
#2  0x7fff97f89f19
Segmentation fault

The culprit is likely r215307.

Note that I stumbled on this PR for gfortran.dg/eof_4.f90 while regtesting with
-j8.


[Bug fortran/64757] internal compiler error: in fold_convert_loc, at fold-const.c:2353

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64757

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #1 from Dominique d'Humieres dominiq at lps dot ens.fr ---
I get the same ICE with the change to

...
type(TestReference), allocatable :: testList!(:)
...
testList = TestReference(aTest)
...

Thus I think it is a duplicate of pr49213.

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


[Bug c/64768] [4.8/4.9/5 Regression] internal compiler error: tree check: expected tree that contains ‘decl with RTL’ structure, have ‘field_decl’ in set_decl_rtl, at emit-rtl.c:1274

2015-01-24 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64768

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org ---
Started with my r182026.


[Bug fortran/64678] Expected association error on dependent associate statements

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64678

--- Comment #4 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 Indeed, that's the easy workaround. I'd have thought the obvious definition
 for the single multi-associate statement would be to be a shortcut exactly
 equivalent to nested associates.

In my mind it was not a workaround. From what I understand (little) of the
Kargl's comment 1, the two forms should be either rejected or accepted.


[Bug fortran/64757] internal compiler error: in fold_convert_loc, at fold-const.c:2353

2015-01-24 Thread janus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64757

janus at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
 Status|RESOLVED|NEW
   Last reconfirmed||2015-01-24
 CC||janus at gcc dot gnu.org
 Resolution|DUPLICATE   |---
 Ever confirmed|0   |1

--- Comment #2 from janus at gcc dot gnu.org ---
(In reply to Dominique d'Humieres from comment #1
 Thus I think it is a duplicate of pr49213.

It it certainly related, but I'm not sure it is an exact duplicate. In
particular the above PR has quite a history and includes several test cases.
Let's keep it separate for now.


[Bug fortran/64757] [5 Regression] ICE in fold_convert_loc, at fold-const.c:2353

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64757

--- Comment #4 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 It it certainly related, but I'm not sure it is an exact duplicate.
 In particular the above PR has quite a history and includes several
 test cases. Let's keep it separate for now.

I disagree. AFACT this PR gives the same ICE as the test in pr49213 comment 8
or the following variant of the original code

program main

  type :: S
integer :: n
  end type
  type(S) :: Sobj

  type, extends(S) :: S2
integer :: m
  end type
  type(S2) :: S2obj

  type :: T
class(S), allocatable :: x
  end type
  type(T) :: Tobj

  Sobj = S(1)
  Tobj = T(Sobj)

  S2obj = S2(1,2)
  print *, S2obj%n, S2obj%m

end program

Actually pr49213 is a collection of different bugs, one being this PR. IMO
pr49213 should be split along the different bugs.


[Bug fortran/57023] [4.8/4.9 Regression] Not packing arrays with changing variable used for size

2015-01-24 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57023

--- Comment #8 from Thomas Koenig tkoenig at gcc dot gnu.org ---
Author: tkoenig
Date: Sat Jan 24 12:50:51 2015
New Revision: 220080

URL: https://gcc.gnu.org/viewcvs?rev=220080root=gccview=rev
Log:
2015-01-24  Thomas Koenig  tkoe...@netcologne.de

Backport from trunk
PR fortran/57023
* dependency.c (callback_dummy_intent_not_int):  New function.
(dummy_intent_not_in):  New function.
(gfc_full_array_ref_p):  Use dummy_intent_not_in.

2015-01-24  Thomas Koenig  tkoe...@netcologne.de

Backport from trunk
PR fortran/57023
* gfortran.dg/internal_pack_15.f90:  New test.

Added:
branches/gcc-4_9-branch/gcc/testsuite/gfortran.dg/internal_pack_15.f90
Modified:
branches/gcc-4_9-branch/gcc/fortran/ChangeLog
branches/gcc-4_9-branch/gcc/fortran/dependency.c
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog


[Bug fortran/64692] Incorrect result for sourced allocate of class(*) array

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64692

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-01-24
 Ever confirmed|0   |1

--- Comment #1 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Confirmed for 4.9 and 5.0 (r220065):

 array 1   3.4. 
 array 2   4.6.9532175754940950E-310

I suspect an off-by-one problem. Note that with 4.8.4 I get

 array 1   3.4. 
 array 2   1.2.


[Bug fortran/49213] [OOP] gfortran rejects structure constructor expression

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49213

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

 CC||mike at rilee dot net

--- Comment #20 from Dominique d'Humieres dominiq at lps dot ens.fr ---
*** Bug 64757 has been marked as a duplicate of this bug. ***


[Bug fortran/64692] Incorrect result for sourced allocate of class(*) array

2015-01-24 Thread antony at cosmologist dot info
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64692

--- Comment #2 from Antony Lewis antony at cosmologist dot info ---
May be same/related to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60322 ?


[Bug fortran/64678] Expected association error on dependent associate statements

2015-01-24 Thread antony at cosmologist dot info
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64678

--- Comment #3 from Antony Lewis antony at cosmologist dot info ---
Indeed, that's the easy workaround. I'd have thought the obvious definition for
the single multi-associate statement would be to be a shortcut exactly
equivalent to nested associates.


[Bug fortran/64757] [5 Regression] ICE in fold_convert_loc, at fold-const.c:2353

2015-01-24 Thread janus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64757

--- Comment #5 from janus at gcc dot gnu.org ---
(In reply to Dominique d'Humieres from comment #4)
 Actually pr49213 is a collection of different bugs, one being this PR.

Right. Exactly for this reason I want to keep it separate. Makes it much easier
to keep track of the different problems separately.


[Bug c/64768] [4.8/4.9/5 Regression] internal compiler error: tree check: expected tree that contains ‘decl with RTL’ structure, have ‘field_decl’ in set_decl_rtl, at emit-rtl.c:1274

2015-01-24 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64768

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
I guess mine.


[Bug c/64768] [4.8/4.9/5 Regression] internal compiler error: tree check: expected tree that contains ‘decl with RTL’ structure, have ‘field_decl’ in set_decl_rtl, at emit-rtl.c:1274

2015-01-24 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64768

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-01-24
 Ever confirmed|0   |1


[Bug c/64768] [4.8/4.9/5 Regression] internal compiler error: tree check: expected tree that contains ‘decl with RTL’ structure, have ‘field_decl’ in set_decl_rtl, at emit-rtl.c:1274

2015-01-24 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64768

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.8.5
Summary|internal compiler error:|[4.8/4.9/5 Regression]
   |tree check: expected tree   |internal compiler error:
   |that contains ‘decl with|tree check: expected tree
   |RTL’ structure, have|that contains ‘decl with
   |‘field_decl’ in |RTL’ structure, have
   |set_decl_rtl, at|‘field_decl’ in
   |emit-rtl.c:1274 |set_decl_rtl, at
   ||emit-rtl.c:1274

--- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org ---
Seems to be a regression, gcc 4.5 says
ice2.c:2:12: error: array size missing in ‘a’
ice2.c:2:8: error: expected specifier-qualifier-list at end of input
and doesn't ICE.

[Bug target/64688] [5 Regression] internal compiler error: Max. number of generated reload insns per insn is achieved (90)

2015-01-24 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64688

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |---

--- Comment #8 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
(In reply to Jakub Jelinek from comment #7)
 Fixed then.

Unfortunately not. The boost testsuite still shows the same issue
on the same file.

Reducing again.


[Bug target/64688] [5 Regression] internal compiler error: Max. number of generated reload insns per insn is achieved (90)

2015-01-24 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64688

--- Comment #10 from Uroš Bizjak ubizjak at gmail dot com ---
(In reply to Markus Trippelsdorf from comment #8)

 Unfortunately not. The boost testsuite still shows the same issue
 on the same file.

The fix depends on the ability of IRA to push the register to memory and reload
it through memory constraint.

[Bug middle-end/64766] [4.8/4.9/5 Regression] internal compiler error: tree check: expected block, have error_mark in lower_function_body, at gimple-low.c:122

2015-01-24 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64766

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-01-24
 CC||jakub at gcc dot gnu.org
   Target Milestone|--- |4.8.5
Summary|internal compiler error:|[4.8/4.9/5 Regression]
   |tree check: expected block, |internal compiler error:
   |have error_mark in  |tree check: expected block,
   |lower_function_body, at |have error_mark in
   |gimple-low.c:122|lower_function_body, at
   ||gimple-low.c:122
 Ever confirmed|0   |1

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
Started with r149750.


[Bug target/64342] [5 Regression] Tests failing when compiled with '-m32 -fpic' after r216154.

2015-01-24 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64342

vries at gcc dot gnu.org changed:

   What|Removed |Added

 CC||vries at gcc dot gnu.org

--- Comment #4 from vries at gcc dot gnu.org ---
Submitted patch for funcspec-5.c:
https://gcc.gnu.org/ml/gcc-patches/2015-01/msg02162.html


[Bug c/64768] [4.8/4.9/5 Regression] internal compiler error: tree check: expected tree that contains ‘decl with RTL’ structure, have ‘field_decl’ in set_decl_rtl, at emit-rtl.c:1274

2015-01-24 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64768

--- Comment #4 from Marek Polacek mpolacek at gcc dot gnu.org ---
And even better:

typedef int A[];
struct { int i; A a; } a;

Clang accepts the code, we say (released compiler):
ice2.c:2:19: error: array size missing in ‘a’
 struct { int i; A a; } a;
   ^
and ICE with checking enabled since 4.6.

[Bug target/64342] [5 Regression] Tests failing when compiled with '-m32 -fpic' after r216154.

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64342

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-01-24
 Ever confirmed|0   |1

--- Comment #5 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 I've just submitted a patch for

 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64317

 The patch might fix this PR too.  Could you check it.

 Thanks.

Unfortunately not.

 Submitted patch for funcspec-5.c:
 https://gcc.gnu.org/ml/gcc-patches/2015-01/msg02162.html

This patch has no chance to fix the failures for the fuse-caller-save* tests.

The failures reported in comment 0 are still there at revision r220065 (I'll
test the patch for funcspec-5.c later today).


[Bug fortran/64757] [5 Regression] ICE in fold_convert_loc, at fold-const.c:2353

2015-01-24 Thread janus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64757

janus at gcc dot gnu.org changed:

   What|Removed |Added

Summary|internal compiler error: in |[5 Regression] ICE in
   |fold_convert_loc, at|fold_convert_loc, at
   |fold-const.c:2353   |fold-const.c:2353

--- Comment #3 from janus at gcc dot gnu.org ---
Here is a reduction of the original test case which gives the ICE with trunk,
but compiles cleanly with 4.9:


  type :: Test
  end type

  type :: TestReference
 class(Test), allocatable :: test
  end type

  type(TestReference) :: testList

  testList = TestReference(Test())  ! ICE in fold_convert_loc

end



The backtrace is:

internal compiler error: in fold_convert_loc, bei fold-const.c:2357
0x814255 fold_convert_loc(unsigned int, tree_node*, tree_node*)
/home/jweil/gcc/gcc50/trunk/gcc/fold-const.c:2357
0x6b16ea alloc_scalar_allocatable_for_subcomponent_assignment
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-expr.c:6403
0x6b16ea gfc_trans_subcomponent_assign
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-expr.c:6497
0x6b087b gfc_trans_structure_assign
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-expr.c:6649
0x6b2104 gfc_conv_structure(gfc_se*, gfc_expr*, int)
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-expr.c:6678
0x6ad46c gfc_conv_expr(gfc_se*, gfc_expr*)
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-expr.c:6848
0x6b32ff gfc_trans_assignment_1
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-expr.c:8553
0x682035 trans_code
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans.c:1650
0x6a2e53 gfc_generate_function_code(gfc_namespace*)
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-decl.c:5844
0x63e470 translate_all_program_units
/home/jweil/gcc/gcc50/trunk/gcc/fortran/parse.c:5341
0x63e470 gfc_parse_file()
/home/jweil/gcc/gcc50/trunk/gcc/fortran/parse.c:5538
0x67de95 gfc_be_parse_file
/home/jweil/gcc/gcc50/trunk/gcc/fortran/f95-lang.c:228


[Bug target/64342] [5 Regression] Tests failing when compiled with '-m32 -fpic' after r216154.

2015-01-24 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64342

--- Comment #6 from vries at gcc dot gnu.org ---
avx512f-kandnw-1.c fails with -fpic, because there's no kandnw instruction in
the .s file. In postreload, it's still there:
...
(insn 17 40 39 2 (parallel [
(set (reg:HI 0 ax [105])
(and:HI (not:HI (reg:HI 0 ax [105]))
(reg:HI 2 cx [orig:103 k2 ] [103])))
(clobber (reg:CC 17 flags))
]) build/gcc/include/avx512fintrin.h:9995 386 {kandnhi}
 (nil))
...

Immediately afterwards, in split2, it disappears:
...
Splitting with gen_split_5282
scanning new insn with uid = 42.
scanning new insn with uid = 43.
deleting insn with uid = 17.
...

This is due to this split in i386.md (introduced in r202491):
...
(define_split
  [(set (match_operand:SWI12 0 general_reg_operand)
(and:SWI12
  (not:SWI12
(match_dup 0))
  (match_operand:SWI12 1 general_reg_operand)))
   (clobber (reg:CC FLAGS_REG))]
  TARGET_AVX512F  !TARGET_BMI  reload_completed
  [(set (match_dup 0)
(not:HI (match_dup 0)))
   (parallel [(set (match_dup 0)
   (and:HI (match_dup 0)
   (match_dup 1)))
  (clobber (reg:CC FLAGS_REG))])])
...


[Bug target/52933] SH Target: Use div0s for integer sign comparisons

2015-01-24 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52933

--- Comment #7 from Oleg Endo olegendo at gcc dot gnu.org ---
Author: olegendo
Date: Sat Jan 24 13:04:53 2015
New Revision: 220081

URL: https://gcc.gnu.org/viewcvs?rev=220081root=gccview=rev
Log:
gcc/
PR target/49263
PR target/53987
PR target/64345
PR target/59533
PR target/52933
PR target/54236
PR target/51244
* config/sh/sh-protos.h
(sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg,
sh_is_nott_insn, sh_movt_set_dest, sh_movrt_set_dest, sh_is_movt_insn,
sh_is_movrt_insn, sh_insn_operands_modified_between_p,
sh_reg_dead_or_unused_after_insn, sh_in_recog_treg_set_expr,
sh_recog_treg_set_expr, sh_split_treg_set_expr): New functions.
(sh_treg_insns): New class.
* config/sh/sh.c (TARGET_LEGITIMATE_COMBINED_INSN): Define target hook.
(scope_counter): New class.
(sh_legitimate_combined_insn, sh_is_nott_insn, sh_movt_set_dest,
sh_movrt_set_dest, sh_reg_dead_or_unused_after_insn,
sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg, sh_recog_treg_set_expr,
sh_in_recog_treg_set_expr, sh_try_split_insn_simple,
sh_split_treg_set_expr): New functions.
(addsubcosts): Handle treg_set_expr.
(sh_rtx_costs): Handle IF_THEN_ELSE and ZERO_EXTRACT.
(sh_rtx_costs): Use arith_reg_operand in SIGN_EXTEND and ZERO_EXTEND.
(sh_rtx_costs): Handle additional bit test patterns in EQ and AND cases.
(sh_insn_operands_modified_between_p): Make non-static.
* config/sh/predicates.md (zero_extend_movu_operand): Allow
simple_mem_operand in addition to displacement_mem_operand.
(zero_extend_operand): Don't allow zero_extend_movu_operand.
(treg_set_expr, treg_set_expr_not_const01,
arith_reg_or_treg_set_expr): New predicates.
* config/sh/sh.md (tstsi_t): Use arith_reg_operand and
arith_or_int_operand instead of logical_operand.  Convert to
insn_and_split.  Try to optimize constant operand in splitter.
(tsthi_t, tstqi_t): Fold into *tstmode_t.  Convert to insn_and_split.
(*tstqi_t_zero): Delete.
(*tstmode_t_subregs): Add !sh_in_recog_treg_set_expr split condition.
(tstsi_t_and_not): Delete.
(tstmode_t_zero_extract_eq): Rename to *tstmode_t_zero_extract.
Convert to insn_and_split.
(unnamed split, tstsi_t_zero_extract_xor,
tstsi_t_zero_extract_subreg_xor_little,
tstsi_t_zero_extract_subreg_xor_big): Delete.
(*tstsi_t_shift_mask): New insn_and_split.
(cmpeqsi_t, cmpgesi_t): Add new split for const_int 0 operands and try
to recombine with surrounding insns when splitting.
(*negtstsi): Add !sh_in_recog_treg_set_expr condition.
(cmp_div0s_0, cmp_div0s_1, *cmp_div0s_0, *cmp_div0s_1): Rewrite as ...
(cmp_div0s, *cmp_div0s_1, *cmp_div0s_2, *cmp_div0s_3, *cmp_div0s_4,
*cmp_div0s_5, *cmp_div0s_6): ... these new insn_and_split patterns.
(*cbranch_div0s: Delete.
(*addc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.  Add operand
order variants.
(*addc_t_r, *addc_r_t): Use treg_set_expr_not_const01.
(*addc_r_r_1, *addc_r_lsb, *addc_r_r_lsb, *addc_r_lsb_r, *addc_r_msb,
*addc_r_r_msb, *addc_2r_msb): Delete.
(*addc_2r_lsb): Rename to *addc_2r_t.  Use treg_set_expr.  Add operand
order variant.
(*addc_negreg_t): New insn_and_split.
(*subc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.
Add operand order variants.  
(*subc_negt_reg, *subc_negreg_t, *reg_lsb_t, *reg_msb_t): New
insn_and_split patterns.
(*rotcr): Use arith_reg_or_treg_set_expr.  Try to recombine with
surrounding insns when splitting.
(unnamed rotcr split): Use arith_reg_or_treg_set_expr.
(*rotcl): Likewise.  Add zero_extract variant.
(*ashrsi2_31): New insn_and_split.
(*negc): Convert to insn_and_split.  Use treg_set_expr.
(*zero_extendmodesi2_disp_mem): Update comment.
(movrt_negc, *movrt_negc, nott): Add !sh_in_recog_treg_set_expr split
condition.
(*mov_t_msb_neg, mov_neg_si_t): Use treg_set_expr.  Try to recombine
with surrounding insns when splitting.
(any_treg_expr_to_reg): New insn_and_split.
(*neg_zero_extract_0, *neg_zero_extract_1, *neg_zero_extract_2,
*neg_zero_extract_3, *neg_zero_extract_4, *neg_zero_extract_5,
*neg_zero_extract_6, *zero_extract_0, *zero_extract_1,
*zero_extract_2): New single bit zero extract patterns.
(bld_reg, *bld_regqi): Fold into bldmode_reg.
(*get_thread_pointersi, store_gbr, *movmode_gbr_load,
*movmode_gbr_load, *movmode_gbr_load, *movmode_gbr_load,
*movdi_gbr_load): Use arith_reg_dest instead of register_operand for
set destination.
(set_thread_pointersi, load_gbr): Use arith_reg_operand instead of
register_operand for 

[Bug target/51244] [SH] Inefficient conditional branch and code around T bit

2015-01-24 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51244

--- Comment #85 from Oleg Endo olegendo at gcc dot gnu.org ---
Author: olegendo
Date: Sat Jan 24 13:04:53 2015
New Revision: 220081

URL: https://gcc.gnu.org/viewcvs?rev=220081root=gccview=rev
Log:
gcc/
PR target/49263
PR target/53987
PR target/64345
PR target/59533
PR target/52933
PR target/54236
PR target/51244
* config/sh/sh-protos.h
(sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg,
sh_is_nott_insn, sh_movt_set_dest, sh_movrt_set_dest, sh_is_movt_insn,
sh_is_movrt_insn, sh_insn_operands_modified_between_p,
sh_reg_dead_or_unused_after_insn, sh_in_recog_treg_set_expr,
sh_recog_treg_set_expr, sh_split_treg_set_expr): New functions.
(sh_treg_insns): New class.
* config/sh/sh.c (TARGET_LEGITIMATE_COMBINED_INSN): Define target hook.
(scope_counter): New class.
(sh_legitimate_combined_insn, sh_is_nott_insn, sh_movt_set_dest,
sh_movrt_set_dest, sh_reg_dead_or_unused_after_insn,
sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg, sh_recog_treg_set_expr,
sh_in_recog_treg_set_expr, sh_try_split_insn_simple,
sh_split_treg_set_expr): New functions.
(addsubcosts): Handle treg_set_expr.
(sh_rtx_costs): Handle IF_THEN_ELSE and ZERO_EXTRACT.
(sh_rtx_costs): Use arith_reg_operand in SIGN_EXTEND and ZERO_EXTEND.
(sh_rtx_costs): Handle additional bit test patterns in EQ and AND cases.
(sh_insn_operands_modified_between_p): Make non-static.
* config/sh/predicates.md (zero_extend_movu_operand): Allow
simple_mem_operand in addition to displacement_mem_operand.
(zero_extend_operand): Don't allow zero_extend_movu_operand.
(treg_set_expr, treg_set_expr_not_const01,
arith_reg_or_treg_set_expr): New predicates.
* config/sh/sh.md (tstsi_t): Use arith_reg_operand and
arith_or_int_operand instead of logical_operand.  Convert to
insn_and_split.  Try to optimize constant operand in splitter.
(tsthi_t, tstqi_t): Fold into *tstmode_t.  Convert to insn_and_split.
(*tstqi_t_zero): Delete.
(*tstmode_t_subregs): Add !sh_in_recog_treg_set_expr split condition.
(tstsi_t_and_not): Delete.
(tstmode_t_zero_extract_eq): Rename to *tstmode_t_zero_extract.
Convert to insn_and_split.
(unnamed split, tstsi_t_zero_extract_xor,
tstsi_t_zero_extract_subreg_xor_little,
tstsi_t_zero_extract_subreg_xor_big): Delete.
(*tstsi_t_shift_mask): New insn_and_split.
(cmpeqsi_t, cmpgesi_t): Add new split for const_int 0 operands and try
to recombine with surrounding insns when splitting.
(*negtstsi): Add !sh_in_recog_treg_set_expr condition.
(cmp_div0s_0, cmp_div0s_1, *cmp_div0s_0, *cmp_div0s_1): Rewrite as ...
(cmp_div0s, *cmp_div0s_1, *cmp_div0s_2, *cmp_div0s_3, *cmp_div0s_4,
*cmp_div0s_5, *cmp_div0s_6): ... these new insn_and_split patterns.
(*cbranch_div0s: Delete.
(*addc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.  Add operand
order variants.
(*addc_t_r, *addc_r_t): Use treg_set_expr_not_const01.
(*addc_r_r_1, *addc_r_lsb, *addc_r_r_lsb, *addc_r_lsb_r, *addc_r_msb,
*addc_r_r_msb, *addc_2r_msb): Delete.
(*addc_2r_lsb): Rename to *addc_2r_t.  Use treg_set_expr.  Add operand
order variant.
(*addc_negreg_t): New insn_and_split.
(*subc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.
Add operand order variants.  
(*subc_negt_reg, *subc_negreg_t, *reg_lsb_t, *reg_msb_t): New
insn_and_split patterns.
(*rotcr): Use arith_reg_or_treg_set_expr.  Try to recombine with
surrounding insns when splitting.
(unnamed rotcr split): Use arith_reg_or_treg_set_expr.
(*rotcl): Likewise.  Add zero_extract variant.
(*ashrsi2_31): New insn_and_split.
(*negc): Convert to insn_and_split.  Use treg_set_expr.
(*zero_extendmodesi2_disp_mem): Update comment.
(movrt_negc, *movrt_negc, nott): Add !sh_in_recog_treg_set_expr split
condition.
(*mov_t_msb_neg, mov_neg_si_t): Use treg_set_expr.  Try to recombine
with surrounding insns when splitting.
(any_treg_expr_to_reg): New insn_and_split.
(*neg_zero_extract_0, *neg_zero_extract_1, *neg_zero_extract_2,
*neg_zero_extract_3, *neg_zero_extract_4, *neg_zero_extract_5,
*neg_zero_extract_6, *zero_extract_0, *zero_extract_1,
*zero_extract_2): New single bit zero extract patterns.
(bld_reg, *bld_regqi): Fold into bldmode_reg.
(*get_thread_pointersi, store_gbr, *movmode_gbr_load,
*movmode_gbr_load, *movmode_gbr_load, *movmode_gbr_load,
*movdi_gbr_load): Use arith_reg_dest instead of register_operand for
set destination.
(set_thread_pointersi, load_gbr): Use arith_reg_operand instead of
register_operand for 

[Bug fortran/64772] New: ICE passing coarrays to subroutine

2015-01-24 Thread fanfarillo.gcc at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64772

Bug ID: 64772
   Summary: ICE passing coarrays to subroutine
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: fanfarillo.gcc at gmail dot com

Created attachment 34565
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34565action=edit
Taken from the NAS3.3-CAF benchmark provided by the HPCTools group at UH.

Dear all,

the attached code generates the following ICE:

$ gfortran -fcoarray=lib -c cg.f
f951: internal compiler error: Segmentation fault
0xb6c6ff crash_signal
../../gcc/toplev.c:383
0x5ea56c gfc_zero_size_array
../../gcc/fortran/arith.c:1637
0x5ea56c reduce_binary0
../../gcc/fortran/arith.c:1651
0x5eb460 eval_intrinsic_f3
../../gcc/fortran/arith.c:1700
0x622e63 check_dummy_characteristics
../../gcc/fortran/interface.c:1212
0x622807 check_dummy_characteristics
../../gcc/fortran/interface.c:1058
0x622807 gfc_compare_interfaces(gfc_symbol*, gfc_symbol*, char const*, int,
int, char*, int, char const*, char const*)
../../gcc/fortran/interface.c:1511
0x67d5ad resolve_global_procedure
../../gcc/fortran/resolve.c:2456
0x67d8b7 resolve_call
../../gcc/fortran/resolve.c:3394
0x67af88 gfc_resolve_code(gfc_code*, gfc_namespace*)
../../gcc/fortran/resolve.c:10190
0x67d182 resolve_codes
../../gcc/fortran/resolve.c:14974
0x67d262 gfc_resolve
../../gcc/fortran/resolve.c:15002
0x668f7a resolve_all_program_units
../../gcc/fortran/parse.c:5280
0x668f7a gfc_parse_file()
../../gcc/fortran/parse.c:5523
0x6a8ad5 gfc_be_parse_file
../../gcc/fortran/f95-lang.c:228
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.

--

My current configuration:

Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/home/alex/Downloads/gcc/libexec/gcc/x86_64-unknown-linux-gnu/5.0.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/home/alex/gcc
--enable-languages=c,c++,fortran --disable-multilib --disable-libgcj
--disable-bootstrap
Thread model: posix
gcc version 5.0.0 20150124 (experimental) (GCC) 

Thanks


[Bug fortran/64772] [5 Regression] ICE passing coarrays to subroutine

2015-01-24 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64772

Thomas Koenig tkoenig at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-01-24
 CC||tkoenig at gcc dot gnu.org
   Target Milestone|--- |5.0
Summary|ICE passing coarrays to |[5 Regression] ICE passing
   |subroutine  |coarrays to subroutine
 Ever confirmed|0   |1

--- Comment #1 from Thomas Koenig tkoenig at gcc dot gnu.org ---
With -fcoarray=single, the test case fails with

Program received signal SIGSEGV, Segmentation fault.
eval_intrinsic_f3 (op=INTRINSIC_MINUS, eval=0x615a60
gfc_arith_minus(gfc_expr*, gfc_expr*, gfc_expr**), op1=0x0, op2=0x1d73140)
at ../../trunk/gcc/fortran/arith.c:1700
1700  result = reduce_binary0 (op1, op2);
(gdb) p op1
$1 = (gfc_expr *) 0x0

This does not happen with 4.8, hence marking as regression.


[Bug target/64688] [5 Regression] internal compiler error: Max. number of generated reload insns per insn is achieved (90)

2015-01-24 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64688

--- Comment #11 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Created attachment 34566
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34566action=edit
reduced testcase

trippels@gcc20 % g++ -c -O3 -std=c++11 -march=westmere performance.ii
performance.ii: In function ‘void performance_testtest_method()’:
performance.ii:133:1: internal compiler error: Max. number of generated reload
insns per insn is achieved (90)

 }
 ^
0xb6e6e0 lra_constraints(bool)
../../gcc/gcc/lra-constraints.c:4335
0xb5b041 lra(_IO_FILE*)
../../gcc/gcc/lra.c:2292
0xb18da9 do_reload
../../gcc/gcc/ira.c:5418
0xb18da9 execute
../../gcc/gcc/ira.c:5589
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.

[Bug fortran/64772] [4.9/5 Regression] ICE passing coarrays to subroutine

2015-01-24 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64772

Thomas Koenig tkoenig at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|5.0 |4.9.4
Summary|[5 Regression] ICE passing  |[4.9/5 Regression] ICE
   |coarrays to subroutine  |passing coarrays to
   ||subroutine

--- Comment #2 from Thomas Koenig tkoenig at gcc dot gnu.org ---
Also a segfault in a very similar place with 4.9.


[Bug c++/64758] [C++11] Give better error message when name of enum's base type cannot be resolved

2015-01-24 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64758

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-01-24
 Ever confirmed|0   |1


[Bug c++/64759] The compiler does NOT show a warning in a case where it is reasonable to expect a warning message.

2015-01-24 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64759

--- Comment #4 from Jonathan Wakely redi at gcc dot gnu.org ---
(In reply to Lakshay Garg from comment #2)
 It makes sense to compare against 0 but not 0.0

Huh? Why not?

This code seems perfectly reasonable to me:

 double divisor;
 std::cin  divisor;
 if (!divisor)
   throw std::invalid_argument(Divide by zero attempted);


[Bug c++/64759] The compiler does NOT show a warning in a case where it is reasonable to expect a warning message.

2015-01-24 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64759

--- Comment #5 from Jonathan Wakely redi at gcc dot gnu.org ---
(well, apart from not checking if the input operation failed ;-)


[Bug fortran/64771] ICE(segfault) when passing coarrays around; ICE in gfc_zero_size_array in arith.c:1637

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64771

--- Comment #2 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Dup of 64772.


[Bug c++/64755] Error in optimization with std::array

2015-01-24 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64755

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
Comment on attachment 34556
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34556
They are 3 files bug.cpp (contain the code to compile), bug.O1 and bug.O2
(contain the assembly code generated by g++) witch return 0 in O1 or -1 in O2..

Code from the attachment to save having to unrar it:

#include array

template typename All, typename Left, typename Rigth
struct basic_reg {
union {
All value;
struct {
Rigth lower;
Left higher;
} halfs;
};
};

template typename Left
struct basic_regLeft, Left, void {
Left value;
};

template typename Register, unsigned short Size
struct basic_registers {
typedef Register register_t;
typedef std::arrayregister_t, Size registers_t;
basic_registers() : m_registers{0} {}
typename registers_t::reference
operator[](typename registers_t::size_type i) {
return m_registers[i];
}

private:
registers_t m_registers;
};

typedef basic_reguint8_t, uint8_t, void bits_08_register;
typedef basic_reguint16_t, bits_08_register, bits_08_register
bits_16_register;
typedef basic_reguint32_t, bits_16_register, bits_16_register
bits_32_register;
typedef basic_registersbits_32_register, 1 igpr_bits_32_registers;

struct basic_registry_wrapper {
typedef std::arrayuint16_t*, 1 gp_bit16_array;
typedef std::arrayuint32_t*, 1 gp_bit32_array;

basic_registry_wrapper(igpr_bits_32_registers registers) {
m_gpr_bits16_array[0] = registers[0].halfs.lower.value;
m_gpr_bits32_array[0] = registers[0].value;
}

uint16_t ax() { return *m_gpr_bits16_array[0]; }
uint32_t eax() { return *m_gpr_bits32_array[0]; }

private:
gp_bit16_array m_gpr_bits16_array;
gp_bit32_array m_gpr_bits32_array;
};

int main() {
igpr_bits_32_registers reg_32;
basic_registry_wrapper reg_wrap_32(reg_32);

if (reg_wrap_32.eax() != 0)
return -1;
reg_wrap_32.eax() = 0x12345678;
if (reg_wrap_32.ax() != 0x5678)
return -1;
return 0;
}


[Bug target/64345] [SH] Improve single bit extraction

2015-01-24 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64345

--- Comment #1 from Oleg Endo olegendo at gcc dot gnu.org ---
Author: olegendo
Date: Sat Jan 24 13:04:53 2015
New Revision: 220081

URL: https://gcc.gnu.org/viewcvs?rev=220081root=gccview=rev
Log:
gcc/
PR target/49263
PR target/53987
PR target/64345
PR target/59533
PR target/52933
PR target/54236
PR target/51244
* config/sh/sh-protos.h
(sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg,
sh_is_nott_insn, sh_movt_set_dest, sh_movrt_set_dest, sh_is_movt_insn,
sh_is_movrt_insn, sh_insn_operands_modified_between_p,
sh_reg_dead_or_unused_after_insn, sh_in_recog_treg_set_expr,
sh_recog_treg_set_expr, sh_split_treg_set_expr): New functions.
(sh_treg_insns): New class.
* config/sh/sh.c (TARGET_LEGITIMATE_COMBINED_INSN): Define target hook.
(scope_counter): New class.
(sh_legitimate_combined_insn, sh_is_nott_insn, sh_movt_set_dest,
sh_movrt_set_dest, sh_reg_dead_or_unused_after_insn,
sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg, sh_recog_treg_set_expr,
sh_in_recog_treg_set_expr, sh_try_split_insn_simple,
sh_split_treg_set_expr): New functions.
(addsubcosts): Handle treg_set_expr.
(sh_rtx_costs): Handle IF_THEN_ELSE and ZERO_EXTRACT.
(sh_rtx_costs): Use arith_reg_operand in SIGN_EXTEND and ZERO_EXTEND.
(sh_rtx_costs): Handle additional bit test patterns in EQ and AND cases.
(sh_insn_operands_modified_between_p): Make non-static.
* config/sh/predicates.md (zero_extend_movu_operand): Allow
simple_mem_operand in addition to displacement_mem_operand.
(zero_extend_operand): Don't allow zero_extend_movu_operand.
(treg_set_expr, treg_set_expr_not_const01,
arith_reg_or_treg_set_expr): New predicates.
* config/sh/sh.md (tstsi_t): Use arith_reg_operand and
arith_or_int_operand instead of logical_operand.  Convert to
insn_and_split.  Try to optimize constant operand in splitter.
(tsthi_t, tstqi_t): Fold into *tstmode_t.  Convert to insn_and_split.
(*tstqi_t_zero): Delete.
(*tstmode_t_subregs): Add !sh_in_recog_treg_set_expr split condition.
(tstsi_t_and_not): Delete.
(tstmode_t_zero_extract_eq): Rename to *tstmode_t_zero_extract.
Convert to insn_and_split.
(unnamed split, tstsi_t_zero_extract_xor,
tstsi_t_zero_extract_subreg_xor_little,
tstsi_t_zero_extract_subreg_xor_big): Delete.
(*tstsi_t_shift_mask): New insn_and_split.
(cmpeqsi_t, cmpgesi_t): Add new split for const_int 0 operands and try
to recombine with surrounding insns when splitting.
(*negtstsi): Add !sh_in_recog_treg_set_expr condition.
(cmp_div0s_0, cmp_div0s_1, *cmp_div0s_0, *cmp_div0s_1): Rewrite as ...
(cmp_div0s, *cmp_div0s_1, *cmp_div0s_2, *cmp_div0s_3, *cmp_div0s_4,
*cmp_div0s_5, *cmp_div0s_6): ... these new insn_and_split patterns.
(*cbranch_div0s: Delete.
(*addc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.  Add operand
order variants.
(*addc_t_r, *addc_r_t): Use treg_set_expr_not_const01.
(*addc_r_r_1, *addc_r_lsb, *addc_r_r_lsb, *addc_r_lsb_r, *addc_r_msb,
*addc_r_r_msb, *addc_2r_msb): Delete.
(*addc_2r_lsb): Rename to *addc_2r_t.  Use treg_set_expr.  Add operand
order variant.
(*addc_negreg_t): New insn_and_split.
(*subc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.
Add operand order variants.  
(*subc_negt_reg, *subc_negreg_t, *reg_lsb_t, *reg_msb_t): New
insn_and_split patterns.
(*rotcr): Use arith_reg_or_treg_set_expr.  Try to recombine with
surrounding insns when splitting.
(unnamed rotcr split): Use arith_reg_or_treg_set_expr.
(*rotcl): Likewise.  Add zero_extract variant.
(*ashrsi2_31): New insn_and_split.
(*negc): Convert to insn_and_split.  Use treg_set_expr.
(*zero_extendmodesi2_disp_mem): Update comment.
(movrt_negc, *movrt_negc, nott): Add !sh_in_recog_treg_set_expr split
condition.
(*mov_t_msb_neg, mov_neg_si_t): Use treg_set_expr.  Try to recombine
with surrounding insns when splitting.
(any_treg_expr_to_reg): New insn_and_split.
(*neg_zero_extract_0, *neg_zero_extract_1, *neg_zero_extract_2,
*neg_zero_extract_3, *neg_zero_extract_4, *neg_zero_extract_5,
*neg_zero_extract_6, *zero_extract_0, *zero_extract_1,
*zero_extract_2): New single bit zero extract patterns.
(bld_reg, *bld_regqi): Fold into bldmode_reg.
(*get_thread_pointersi, store_gbr, *movmode_gbr_load,
*movmode_gbr_load, *movmode_gbr_load, *movmode_gbr_load,
*movdi_gbr_load): Use arith_reg_dest instead of register_operand for
set destination.
(set_thread_pointersi, load_gbr): Use arith_reg_operand instead of
register_operand for 

[Bug target/59533] [SH] Missed cmp/pz opportunity

2015-01-24 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59533

--- Comment #4 from Oleg Endo olegendo at gcc dot gnu.org ---
Author: olegendo
Date: Sat Jan 24 13:04:53 2015
New Revision: 220081

URL: https://gcc.gnu.org/viewcvs?rev=220081root=gccview=rev
Log:
gcc/
PR target/49263
PR target/53987
PR target/64345
PR target/59533
PR target/52933
PR target/54236
PR target/51244
* config/sh/sh-protos.h
(sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg,
sh_is_nott_insn, sh_movt_set_dest, sh_movrt_set_dest, sh_is_movt_insn,
sh_is_movrt_insn, sh_insn_operands_modified_between_p,
sh_reg_dead_or_unused_after_insn, sh_in_recog_treg_set_expr,
sh_recog_treg_set_expr, sh_split_treg_set_expr): New functions.
(sh_treg_insns): New class.
* config/sh/sh.c (TARGET_LEGITIMATE_COMBINED_INSN): Define target hook.
(scope_counter): New class.
(sh_legitimate_combined_insn, sh_is_nott_insn, sh_movt_set_dest,
sh_movrt_set_dest, sh_reg_dead_or_unused_after_insn,
sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg, sh_recog_treg_set_expr,
sh_in_recog_treg_set_expr, sh_try_split_insn_simple,
sh_split_treg_set_expr): New functions.
(addsubcosts): Handle treg_set_expr.
(sh_rtx_costs): Handle IF_THEN_ELSE and ZERO_EXTRACT.
(sh_rtx_costs): Use arith_reg_operand in SIGN_EXTEND and ZERO_EXTEND.
(sh_rtx_costs): Handle additional bit test patterns in EQ and AND cases.
(sh_insn_operands_modified_between_p): Make non-static.
* config/sh/predicates.md (zero_extend_movu_operand): Allow
simple_mem_operand in addition to displacement_mem_operand.
(zero_extend_operand): Don't allow zero_extend_movu_operand.
(treg_set_expr, treg_set_expr_not_const01,
arith_reg_or_treg_set_expr): New predicates.
* config/sh/sh.md (tstsi_t): Use arith_reg_operand and
arith_or_int_operand instead of logical_operand.  Convert to
insn_and_split.  Try to optimize constant operand in splitter.
(tsthi_t, tstqi_t): Fold into *tstmode_t.  Convert to insn_and_split.
(*tstqi_t_zero): Delete.
(*tstmode_t_subregs): Add !sh_in_recog_treg_set_expr split condition.
(tstsi_t_and_not): Delete.
(tstmode_t_zero_extract_eq): Rename to *tstmode_t_zero_extract.
Convert to insn_and_split.
(unnamed split, tstsi_t_zero_extract_xor,
tstsi_t_zero_extract_subreg_xor_little,
tstsi_t_zero_extract_subreg_xor_big): Delete.
(*tstsi_t_shift_mask): New insn_and_split.
(cmpeqsi_t, cmpgesi_t): Add new split for const_int 0 operands and try
to recombine with surrounding insns when splitting.
(*negtstsi): Add !sh_in_recog_treg_set_expr condition.
(cmp_div0s_0, cmp_div0s_1, *cmp_div0s_0, *cmp_div0s_1): Rewrite as ...
(cmp_div0s, *cmp_div0s_1, *cmp_div0s_2, *cmp_div0s_3, *cmp_div0s_4,
*cmp_div0s_5, *cmp_div0s_6): ... these new insn_and_split patterns.
(*cbranch_div0s: Delete.
(*addc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.  Add operand
order variants.
(*addc_t_r, *addc_r_t): Use treg_set_expr_not_const01.
(*addc_r_r_1, *addc_r_lsb, *addc_r_r_lsb, *addc_r_lsb_r, *addc_r_msb,
*addc_r_r_msb, *addc_2r_msb): Delete.
(*addc_2r_lsb): Rename to *addc_2r_t.  Use treg_set_expr.  Add operand
order variant.
(*addc_negreg_t): New insn_and_split.
(*subc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.
Add operand order variants.  
(*subc_negt_reg, *subc_negreg_t, *reg_lsb_t, *reg_msb_t): New
insn_and_split patterns.
(*rotcr): Use arith_reg_or_treg_set_expr.  Try to recombine with
surrounding insns when splitting.
(unnamed rotcr split): Use arith_reg_or_treg_set_expr.
(*rotcl): Likewise.  Add zero_extract variant.
(*ashrsi2_31): New insn_and_split.
(*negc): Convert to insn_and_split.  Use treg_set_expr.
(*zero_extendmodesi2_disp_mem): Update comment.
(movrt_negc, *movrt_negc, nott): Add !sh_in_recog_treg_set_expr split
condition.
(*mov_t_msb_neg, mov_neg_si_t): Use treg_set_expr.  Try to recombine
with surrounding insns when splitting.
(any_treg_expr_to_reg): New insn_and_split.
(*neg_zero_extract_0, *neg_zero_extract_1, *neg_zero_extract_2,
*neg_zero_extract_3, *neg_zero_extract_4, *neg_zero_extract_5,
*neg_zero_extract_6, *zero_extract_0, *zero_extract_1,
*zero_extract_2): New single bit zero extract patterns.
(bld_reg, *bld_regqi): Fold into bldmode_reg.
(*get_thread_pointersi, store_gbr, *movmode_gbr_load,
*movmode_gbr_load, *movmode_gbr_load, *movmode_gbr_load,
*movdi_gbr_load): Use arith_reg_dest instead of register_operand for
set destination.
(set_thread_pointersi, load_gbr): Use arith_reg_operand instead of
register_operand for 

[Bug target/54236] [SH] Improve addc and subc insn utilization

2015-01-24 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54236

--- Comment #10 from Oleg Endo olegendo at gcc dot gnu.org ---
Author: olegendo
Date: Sat Jan 24 13:04:53 2015
New Revision: 220081

URL: https://gcc.gnu.org/viewcvs?rev=220081root=gccview=rev
Log:
gcc/
PR target/49263
PR target/53987
PR target/64345
PR target/59533
PR target/52933
PR target/54236
PR target/51244
* config/sh/sh-protos.h
(sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg,
sh_is_nott_insn, sh_movt_set_dest, sh_movrt_set_dest, sh_is_movt_insn,
sh_is_movrt_insn, sh_insn_operands_modified_between_p,
sh_reg_dead_or_unused_after_insn, sh_in_recog_treg_set_expr,
sh_recog_treg_set_expr, sh_split_treg_set_expr): New functions.
(sh_treg_insns): New class.
* config/sh/sh.c (TARGET_LEGITIMATE_COMBINED_INSN): Define target hook.
(scope_counter): New class.
(sh_legitimate_combined_insn, sh_is_nott_insn, sh_movt_set_dest,
sh_movrt_set_dest, sh_reg_dead_or_unused_after_insn,
sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg, sh_recog_treg_set_expr,
sh_in_recog_treg_set_expr, sh_try_split_insn_simple,
sh_split_treg_set_expr): New functions.
(addsubcosts): Handle treg_set_expr.
(sh_rtx_costs): Handle IF_THEN_ELSE and ZERO_EXTRACT.
(sh_rtx_costs): Use arith_reg_operand in SIGN_EXTEND and ZERO_EXTEND.
(sh_rtx_costs): Handle additional bit test patterns in EQ and AND cases.
(sh_insn_operands_modified_between_p): Make non-static.
* config/sh/predicates.md (zero_extend_movu_operand): Allow
simple_mem_operand in addition to displacement_mem_operand.
(zero_extend_operand): Don't allow zero_extend_movu_operand.
(treg_set_expr, treg_set_expr_not_const01,
arith_reg_or_treg_set_expr): New predicates.
* config/sh/sh.md (tstsi_t): Use arith_reg_operand and
arith_or_int_operand instead of logical_operand.  Convert to
insn_and_split.  Try to optimize constant operand in splitter.
(tsthi_t, tstqi_t): Fold into *tstmode_t.  Convert to insn_and_split.
(*tstqi_t_zero): Delete.
(*tstmode_t_subregs): Add !sh_in_recog_treg_set_expr split condition.
(tstsi_t_and_not): Delete.
(tstmode_t_zero_extract_eq): Rename to *tstmode_t_zero_extract.
Convert to insn_and_split.
(unnamed split, tstsi_t_zero_extract_xor,
tstsi_t_zero_extract_subreg_xor_little,
tstsi_t_zero_extract_subreg_xor_big): Delete.
(*tstsi_t_shift_mask): New insn_and_split.
(cmpeqsi_t, cmpgesi_t): Add new split for const_int 0 operands and try
to recombine with surrounding insns when splitting.
(*negtstsi): Add !sh_in_recog_treg_set_expr condition.
(cmp_div0s_0, cmp_div0s_1, *cmp_div0s_0, *cmp_div0s_1): Rewrite as ...
(cmp_div0s, *cmp_div0s_1, *cmp_div0s_2, *cmp_div0s_3, *cmp_div0s_4,
*cmp_div0s_5, *cmp_div0s_6): ... these new insn_and_split patterns.
(*cbranch_div0s: Delete.
(*addc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.  Add operand
order variants.
(*addc_t_r, *addc_r_t): Use treg_set_expr_not_const01.
(*addc_r_r_1, *addc_r_lsb, *addc_r_r_lsb, *addc_r_lsb_r, *addc_r_msb,
*addc_r_r_msb, *addc_2r_msb): Delete.
(*addc_2r_lsb): Rename to *addc_2r_t.  Use treg_set_expr.  Add operand
order variant.
(*addc_negreg_t): New insn_and_split.
(*subc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.
Add operand order variants.  
(*subc_negt_reg, *subc_negreg_t, *reg_lsb_t, *reg_msb_t): New
insn_and_split patterns.
(*rotcr): Use arith_reg_or_treg_set_expr.  Try to recombine with
surrounding insns when splitting.
(unnamed rotcr split): Use arith_reg_or_treg_set_expr.
(*rotcl): Likewise.  Add zero_extract variant.
(*ashrsi2_31): New insn_and_split.
(*negc): Convert to insn_and_split.  Use treg_set_expr.
(*zero_extendmodesi2_disp_mem): Update comment.
(movrt_negc, *movrt_negc, nott): Add !sh_in_recog_treg_set_expr split
condition.
(*mov_t_msb_neg, mov_neg_si_t): Use treg_set_expr.  Try to recombine
with surrounding insns when splitting.
(any_treg_expr_to_reg): New insn_and_split.
(*neg_zero_extract_0, *neg_zero_extract_1, *neg_zero_extract_2,
*neg_zero_extract_3, *neg_zero_extract_4, *neg_zero_extract_5,
*neg_zero_extract_6, *zero_extract_0, *zero_extract_1,
*zero_extract_2): New single bit zero extract patterns.
(bld_reg, *bld_regqi): Fold into bldmode_reg.
(*get_thread_pointersi, store_gbr, *movmode_gbr_load,
*movmode_gbr_load, *movmode_gbr_load, *movmode_gbr_load,
*movdi_gbr_load): Use arith_reg_dest instead of register_operand for
set destination.
(set_thread_pointersi, load_gbr): Use arith_reg_operand instead of
register_operand for 

[Bug target/53987] [SH] Unnecessary zero-extensions

2015-01-24 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53987

--- Comment #10 from Oleg Endo olegendo at gcc dot gnu.org ---
Author: olegendo
Date: Sat Jan 24 13:04:53 2015
New Revision: 220081

URL: https://gcc.gnu.org/viewcvs?rev=220081root=gccview=rev
Log:
gcc/
PR target/49263
PR target/53987
PR target/64345
PR target/59533
PR target/52933
PR target/54236
PR target/51244
* config/sh/sh-protos.h
(sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg,
sh_is_nott_insn, sh_movt_set_dest, sh_movrt_set_dest, sh_is_movt_insn,
sh_is_movrt_insn, sh_insn_operands_modified_between_p,
sh_reg_dead_or_unused_after_insn, sh_in_recog_treg_set_expr,
sh_recog_treg_set_expr, sh_split_treg_set_expr): New functions.
(sh_treg_insns): New class.
* config/sh/sh.c (TARGET_LEGITIMATE_COMBINED_INSN): Define target hook.
(scope_counter): New class.
(sh_legitimate_combined_insn, sh_is_nott_insn, sh_movt_set_dest,
sh_movrt_set_dest, sh_reg_dead_or_unused_after_insn,
sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg, sh_recog_treg_set_expr,
sh_in_recog_treg_set_expr, sh_try_split_insn_simple,
sh_split_treg_set_expr): New functions.
(addsubcosts): Handle treg_set_expr.
(sh_rtx_costs): Handle IF_THEN_ELSE and ZERO_EXTRACT.
(sh_rtx_costs): Use arith_reg_operand in SIGN_EXTEND and ZERO_EXTEND.
(sh_rtx_costs): Handle additional bit test patterns in EQ and AND cases.
(sh_insn_operands_modified_between_p): Make non-static.
* config/sh/predicates.md (zero_extend_movu_operand): Allow
simple_mem_operand in addition to displacement_mem_operand.
(zero_extend_operand): Don't allow zero_extend_movu_operand.
(treg_set_expr, treg_set_expr_not_const01,
arith_reg_or_treg_set_expr): New predicates.
* config/sh/sh.md (tstsi_t): Use arith_reg_operand and
arith_or_int_operand instead of logical_operand.  Convert to
insn_and_split.  Try to optimize constant operand in splitter.
(tsthi_t, tstqi_t): Fold into *tstmode_t.  Convert to insn_and_split.
(*tstqi_t_zero): Delete.
(*tstmode_t_subregs): Add !sh_in_recog_treg_set_expr split condition.
(tstsi_t_and_not): Delete.
(tstmode_t_zero_extract_eq): Rename to *tstmode_t_zero_extract.
Convert to insn_and_split.
(unnamed split, tstsi_t_zero_extract_xor,
tstsi_t_zero_extract_subreg_xor_little,
tstsi_t_zero_extract_subreg_xor_big): Delete.
(*tstsi_t_shift_mask): New insn_and_split.
(cmpeqsi_t, cmpgesi_t): Add new split for const_int 0 operands and try
to recombine with surrounding insns when splitting.
(*negtstsi): Add !sh_in_recog_treg_set_expr condition.
(cmp_div0s_0, cmp_div0s_1, *cmp_div0s_0, *cmp_div0s_1): Rewrite as ...
(cmp_div0s, *cmp_div0s_1, *cmp_div0s_2, *cmp_div0s_3, *cmp_div0s_4,
*cmp_div0s_5, *cmp_div0s_6): ... these new insn_and_split patterns.
(*cbranch_div0s: Delete.
(*addc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.  Add operand
order variants.
(*addc_t_r, *addc_r_t): Use treg_set_expr_not_const01.
(*addc_r_r_1, *addc_r_lsb, *addc_r_r_lsb, *addc_r_lsb_r, *addc_r_msb,
*addc_r_r_msb, *addc_2r_msb): Delete.
(*addc_2r_lsb): Rename to *addc_2r_t.  Use treg_set_expr.  Add operand
order variant.
(*addc_negreg_t): New insn_and_split.
(*subc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.
Add operand order variants.  
(*subc_negt_reg, *subc_negreg_t, *reg_lsb_t, *reg_msb_t): New
insn_and_split patterns.
(*rotcr): Use arith_reg_or_treg_set_expr.  Try to recombine with
surrounding insns when splitting.
(unnamed rotcr split): Use arith_reg_or_treg_set_expr.
(*rotcl): Likewise.  Add zero_extract variant.
(*ashrsi2_31): New insn_and_split.
(*negc): Convert to insn_and_split.  Use treg_set_expr.
(*zero_extendmodesi2_disp_mem): Update comment.
(movrt_negc, *movrt_negc, nott): Add !sh_in_recog_treg_set_expr split
condition.
(*mov_t_msb_neg, mov_neg_si_t): Use treg_set_expr.  Try to recombine
with surrounding insns when splitting.
(any_treg_expr_to_reg): New insn_and_split.
(*neg_zero_extract_0, *neg_zero_extract_1, *neg_zero_extract_2,
*neg_zero_extract_3, *neg_zero_extract_4, *neg_zero_extract_5,
*neg_zero_extract_6, *zero_extract_0, *zero_extract_1,
*zero_extract_2): New single bit zero extract patterns.
(bld_reg, *bld_regqi): Fold into bldmode_reg.
(*get_thread_pointersi, store_gbr, *movmode_gbr_load,
*movmode_gbr_load, *movmode_gbr_load, *movmode_gbr_load,
*movdi_gbr_load): Use arith_reg_dest instead of register_operand for
set destination.
(set_thread_pointersi, load_gbr): Use arith_reg_operand instead of
register_operand for 

[Bug target/49263] SH Target: underutilized TST #imm, R0 instruction

2015-01-24 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49263

--- Comment #25 from Oleg Endo olegendo at gcc dot gnu.org ---
Author: olegendo
Date: Sat Jan 24 13:04:53 2015
New Revision: 220081

URL: https://gcc.gnu.org/viewcvs?rev=220081root=gccview=rev
Log:
gcc/
PR target/49263
PR target/53987
PR target/64345
PR target/59533
PR target/52933
PR target/54236
PR target/51244
* config/sh/sh-protos.h
(sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg,
sh_is_nott_insn, sh_movt_set_dest, sh_movrt_set_dest, sh_is_movt_insn,
sh_is_movrt_insn, sh_insn_operands_modified_between_p,
sh_reg_dead_or_unused_after_insn, sh_in_recog_treg_set_expr,
sh_recog_treg_set_expr, sh_split_treg_set_expr): New functions.
(sh_treg_insns): New class.
* config/sh/sh.c (TARGET_LEGITIMATE_COMBINED_INSN): Define target hook.
(scope_counter): New class.
(sh_legitimate_combined_insn, sh_is_nott_insn, sh_movt_set_dest,
sh_movrt_set_dest, sh_reg_dead_or_unused_after_insn,
sh_extending_set_of_reg::can_use_as_unextended_reg,
sh_extending_set_of_reg::use_as_unextended_reg, sh_recog_treg_set_expr,
sh_in_recog_treg_set_expr, sh_try_split_insn_simple,
sh_split_treg_set_expr): New functions.
(addsubcosts): Handle treg_set_expr.
(sh_rtx_costs): Handle IF_THEN_ELSE and ZERO_EXTRACT.
(sh_rtx_costs): Use arith_reg_operand in SIGN_EXTEND and ZERO_EXTEND.
(sh_rtx_costs): Handle additional bit test patterns in EQ and AND cases.
(sh_insn_operands_modified_between_p): Make non-static.
* config/sh/predicates.md (zero_extend_movu_operand): Allow
simple_mem_operand in addition to displacement_mem_operand.
(zero_extend_operand): Don't allow zero_extend_movu_operand.
(treg_set_expr, treg_set_expr_not_const01,
arith_reg_or_treg_set_expr): New predicates.
* config/sh/sh.md (tstsi_t): Use arith_reg_operand and
arith_or_int_operand instead of logical_operand.  Convert to
insn_and_split.  Try to optimize constant operand in splitter.
(tsthi_t, tstqi_t): Fold into *tstmode_t.  Convert to insn_and_split.
(*tstqi_t_zero): Delete.
(*tstmode_t_subregs): Add !sh_in_recog_treg_set_expr split condition.
(tstsi_t_and_not): Delete.
(tstmode_t_zero_extract_eq): Rename to *tstmode_t_zero_extract.
Convert to insn_and_split.
(unnamed split, tstsi_t_zero_extract_xor,
tstsi_t_zero_extract_subreg_xor_little,
tstsi_t_zero_extract_subreg_xor_big): Delete.
(*tstsi_t_shift_mask): New insn_and_split.
(cmpeqsi_t, cmpgesi_t): Add new split for const_int 0 operands and try
to recombine with surrounding insns when splitting.
(*negtstsi): Add !sh_in_recog_treg_set_expr condition.
(cmp_div0s_0, cmp_div0s_1, *cmp_div0s_0, *cmp_div0s_1): Rewrite as ...
(cmp_div0s, *cmp_div0s_1, *cmp_div0s_2, *cmp_div0s_3, *cmp_div0s_4,
*cmp_div0s_5, *cmp_div0s_6): ... these new insn_and_split patterns.
(*cbranch_div0s: Delete.
(*addc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.  Add operand
order variants.
(*addc_t_r, *addc_r_t): Use treg_set_expr_not_const01.
(*addc_r_r_1, *addc_r_lsb, *addc_r_r_lsb, *addc_r_lsb_r, *addc_r_msb,
*addc_r_r_msb, *addc_2r_msb): Delete.
(*addc_2r_lsb): Rename to *addc_2r_t.  Use treg_set_expr.  Add operand
order variant.
(*addc_negreg_t): New insn_and_split.
(*subc): Convert to insn_and_split.  Use treg_set_expr as 3rd operand.
Try to recombine with surrounding insns when splitting.
Add operand order variants.  
(*subc_negt_reg, *subc_negreg_t, *reg_lsb_t, *reg_msb_t): New
insn_and_split patterns.
(*rotcr): Use arith_reg_or_treg_set_expr.  Try to recombine with
surrounding insns when splitting.
(unnamed rotcr split): Use arith_reg_or_treg_set_expr.
(*rotcl): Likewise.  Add zero_extract variant.
(*ashrsi2_31): New insn_and_split.
(*negc): Convert to insn_and_split.  Use treg_set_expr.
(*zero_extendmodesi2_disp_mem): Update comment.
(movrt_negc, *movrt_negc, nott): Add !sh_in_recog_treg_set_expr split
condition.
(*mov_t_msb_neg, mov_neg_si_t): Use treg_set_expr.  Try to recombine
with surrounding insns when splitting.
(any_treg_expr_to_reg): New insn_and_split.
(*neg_zero_extract_0, *neg_zero_extract_1, *neg_zero_extract_2,
*neg_zero_extract_3, *neg_zero_extract_4, *neg_zero_extract_5,
*neg_zero_extract_6, *zero_extract_0, *zero_extract_1,
*zero_extract_2): New single bit zero extract patterns.
(bld_reg, *bld_regqi): Fold into bldmode_reg.
(*get_thread_pointersi, store_gbr, *movmode_gbr_load,
*movmode_gbr_load, *movmode_gbr_load, *movmode_gbr_load,
*movdi_gbr_load): Use arith_reg_dest instead of register_operand for
set destination.
(set_thread_pointersi, load_gbr): Use arith_reg_operand instead of
register_operand for 

[Bug fortran/64678] Expected association error on dependent associate statements

2015-01-24 Thread anlauf at gmx dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64678

Harald Anlauf anlauf at gmx dot de changed:

   What|Removed |Added

 CC||anlauf at gmx dot de

--- Comment #5 from Harald Anlauf anlauf at gmx dot de ---
(In reply to Dominique d'Humieres from comment #4)
  Indeed, that's the easy workaround. I'd have thought the obvious definition
  for the single multi-associate statement would be to be a shortcut exactly
  equivalent to nested associates.
 
 In my mind it was not a workaround. From what I understand (little) of the
 Kargl's comment 1, the two forms should be either rejected or accepted.

I tried NAG, PGI and xlf.  All of them accept the 'nested' version,
but only PGI accepts the original code.

xlf 14:

pr64678.f90, line 10.22: 1514-091 (S) Invalid structure component reference. 
The object name and all component names (except the rightmost) must be of type
derived.

NAG 6:

NAG Fortran Compiler Release 6.0(Hibiya) Build 1032
Product NPL6A60NA for x86-64 Linux
Copyright 1990-2014 The Numerical Algorithms Group Ltd., Oxford, U.K.
f95comp version is Hibiya(6.0) Build 1032
Error: pr64678.f90, line 10: A is not of derived type
   detected at %@MAP

So I think Steve has pointed into the right direction.
Nevertheless, consider posting your code on c.l.f.


[Bug fortran/64771] New: ICE on invalid around check_dummy_characteristics / gfc_zero_size_array

2015-01-24 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64771

Bug ID: 64771
   Summary: ICE on invalid around check_dummy_characteristics /
gfc_zero_size_array
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Keywords: ice-on-invalid-code
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: burnus at gcc dot gnu.org

The following program ICEs with -fcoarray=single and -fcoarray=lib:

f951: internal compiler error: Segmentation fault
0xb8505f crash_signal
../../gcc/toplev.c:383
0x62e82b gfc_zero_size_array
../../gcc/fortran/arith.c:1637
0x62e82b reduce_binary0
../../gcc/fortran/arith.c:1651
0x62e82b eval_intrinsic_f3
../../gcc/fortran/arith.c:1700
0x666365 check_dummy_characteristics
../../gcc/fortran/interface.c:1212



  interface
  subroutine conj_grad ( colidx,
reduce_recv_starts,
reduce_rrecv_starts )
  integercolidx(5), rowstr(4+1)
  integer   reduce_recv_starts(55)[0:*]
  end subroutine
  end interface
 call conj_grad ( colidx,
 reduce_rrecv_starts )
  end
  subroutine conj_grad ( colidx,
reduce_exch_proc,
reduce_rrecv_starts )
  integercolidx(5), rowstr(4+1)
  integer   reduce_exch_proc(55)
  end


[Bug fortran/64771] ICE(segfault) when passing coarrays around; ICE in gfc_zero_size_array in arith.c:1637

2015-01-24 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64771

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords|ice-on-invalid-code |ice-on-valid-code
 CC||fanfarillo.gcc at gmail dot 
com,
   ||tkoenig at gcc dot gnu.org
Summary|ICE on invalid around   |ICE(segfault) when passing
   |check_dummy_characteristics |coarrays around; ICE in
   |/ gfc_zero_size_array   |gfc_zero_size_array in
   ||arith.c:1637

--- Comment #1 from Tobias Burnus burnus at gcc dot gnu.org ---
Fails here the same way, and should be the same reason:
https://gcc.gnu.org/ml/fortran/2015-01/msg00145.html - besides, the test case
is shorter and valid:

  program cg
  implicit none
  integerreduce_recv_starts(2)[0:*]
  interface
  subroutine conj_grad (reduce_recv_starts)
  integer   reduce_recv_starts(2)[0:*]
  end subroutine
  end interface
 call conj_grad (reduce_recv_starts)
  end
  subroutine conj_grad (reduce_recv_starts)
  implicit none
  integer   reduce_recv_starts(2)[0:*]
  end   ! end of routine conj_grad


[Bug fortran/64772] [4.9/5 Regression] ICE passing coarrays to subroutine

2015-01-24 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64772

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
  Known to work||4.8.5
  Known to fail||4.9.2, 5.0

--- Comment #3 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 Also a segfault in a very similar place with 4.9.

I was about to say so!-)


[Bug c++/64767] Could GCC warn when a pointer is compared against '\0'?

2015-01-24 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64767

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-01-24
 Ever confirmed|0   |1
   Severity|enhancement |normal

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
Confirming as a bug not an extension.

In C++03 the code is valid because pointer conversions are allowed for integral
constant expressions, such as '\0', but in C++11 pointer conversions are only
allowed for an integer-literal and not a char-literal.

So this should be an error in C++11, and adding a warning in C++03 at the same
time would make sense (maybe enabled by -Wzero-as-null-pointer-constant and/or
-Wc++11-compat)

Clang gives a hard error with -std=c++11

warn.cc:4:9: error: comparison between pointer and integer ('void *' and 'int')
  if (p == '\0')
  ~ ^  
1 error generated.

Similarly for initializing a pointer with a char-literal, for which clang gives
an error in C++11 mode, and a warning for C++98.

warn.cc:3:9: error: cannot initialize a variable of type 'void *' with an
rvalue of type 'char'
  void* p = '\0';
^   
1 error generated.


warn.cc:3:13: warning: expression which evaluates to zero treated as a null
pointer constant of type 'void *' [-Wnon-literal-null-conversion]
  void* p = '\0';
^~~~
1 warning generated.


[Bug fortran/64771] ICE(segfault) when passing coarrays around; ICE in gfc_zero_size_array in arith.c:1637

2015-01-24 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64771

--- Comment #3 from Tobias Burnus burnus at gcc dot gnu.org ---
*** Bug 64772 has been marked as a duplicate of this bug. ***


  1   2   >