[Bug rtl-optimization/63637] [4.9/5 Regression] CSE on x86 asm()-s no longer working due to PR/60663 fix

2014-12-17 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63637

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-12-17
 CC||jakub at gcc dot gnu.org
   Target Milestone|--- |4.9.3
Summary|CSE on x86 asm()-s no   |[4.9/5 Regression] CSE on
   |longer working due to   |x86 asm()-s no longer
   |PR/60663 fix|working due to PR/60663 fix
 Ever confirmed|0   |1


[Bug rtl-optimization/64110] [5 Regression] ICE: Max. number of generated reload insns per insn is achieved (90)

2014-12-17 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64110

--- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org ---
Looking at the generated assembly, I see there:
movw%di, -80(%rbp)
vpbroadcastw-80(%rbp), %ymm1
vmovdqa %ymm1, -80(%rbp)
I'd have expected
vmovd   %edi, %xmm1
vpbroadcastw%xmm1, %ymm1
vmovdqa %ymm1, -80(%rbp)
Is there some bug in the *vec_dupv16hi pattern that LRA can't use the !r
alternative?  %di should be valid nonimmediate_operand in HImode.  For e.g.
typedef unsigned short V __attribute__((vector_size (32)));
V foo (unsigned short x)
{
  return (V) { x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x };
}
we emit what I expect.  In the latter case, at *.ira we have:
(insn 2 5 3 2 (set (reg:SI 90 [ x ])
(reg:SI 5 di [ x ])) pr64110-4.c:3 90 {*movsi_internal}
 (expr_list:REG_DEAD (reg:SI 5 di [ x ])
(nil)))
(note 3 2 4 2 NOTE_INSN_DELETED)
(note 4 3 7 2 NOTE_INSN_FUNCTION_BEG)
(insn 7 4 12 2 (set (reg:V16HI 92 [ D.2291 ])
(vec_duplicate:V16HI (subreg:HI (reg:SI 90 [ x ]) 0))) pr64110-4.c:4
4233 {*vec_dupv16hi}
 (expr_list:REG_DEAD (reg:SI 90 [ x ])
(nil)))
and in the former case we have:
(insn 27 36 28 2 (set (reg:SI 178 [ x ])
(reg:SI 5 di [ x ])) pr64110.c:10 90 {*movsi_internal}
 (expr_list:REG_DEAD (reg:SI 5 di [ x ])
(nil)))
(insn 28 27 29 2 (set (reg/v:HI 177 [ x ])
(subreg:HI (reg:SI 178 [ x ]) 0)) pr64110.c:10 92 {*movhi_internal}
 (expr_list:REG_DEAD (reg:SI 178 [ x ])
(nil)))
(note 29 28 89 2 NOTE_INSN_FUNCTION_BEG)
(insn 89 29 247 2 (set (reg:V16HI 214 [ vect_cst_.21 ])
(vec_duplicate:V16HI (reg/v:HI 177 [ x ]))) 4233 {*vec_dupv16hi}
 (nil))
which isn't that much different...


[Bug sanitizer/64336] Template functions are not instrumented at -O0 and -Og

2014-12-17 Thread bernd.edlinger at hotmail dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64336

--- Comment #1 from Bernd Edlinger bernd.edlinger at hotmail dot de ---
hmm...


in this example at tsan.c, instrument_expr()
is exiting twice here:

  if (TREE_READONLY (base)
  || (TREE_CODE (base) == VAR_DECL
   DECL_HARD_REGISTER (base)))
return false;


because TREE_READONLY (base) == true !


[Bug libstdc++/64302] The match_results::cbegin()/cend() return incorrect results

2014-12-17 Thread timshen at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64302

--- Comment #1 from Tim Shen timshen at gcc dot gnu.org ---
Author: timshen
Date: Wed Dec 17 09:25:44 2014
New Revision: 218810

URL: https://gcc.gnu.org/viewcvs?rev=218810root=gccview=rev
Log:
PR libstdc++/64302
PR libstdc++/64303
* include/bits/regex.h (match_results::cbegin, match_results::cend,
regex_token_iterator::regex_token_iterator,
regex_token_iterator::_M_normalize_result): Fix match_results cbegin
and cend and regex_token_iterator::_M_result invariant.
* include/bits/regex.tcc: Fix regex_token_iterator::_M_result invariant.
* testsuite/28_regex/iterators/regex_token_iterator/64303.cc: Testcase.

Added:
   
trunk/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/regex.h
trunk/libstdc++-v3/include/bits/regex.tcc


[Bug libstdc++/64303] The regex_token_iterator's copy constructor creates an incorrect iterator

2014-12-17 Thread timshen at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64303

--- Comment #1 from Tim Shen timshen at gcc dot gnu.org ---
Author: timshen
Date: Wed Dec 17 09:25:44 2014
New Revision: 218810

URL: https://gcc.gnu.org/viewcvs?rev=218810root=gccview=rev
Log:
PR libstdc++/64302
PR libstdc++/64303
* include/bits/regex.h (match_results::cbegin, match_results::cend,
regex_token_iterator::regex_token_iterator,
regex_token_iterator::_M_normalize_result): Fix match_results cbegin
and cend and regex_token_iterator::_M_result invariant.
* include/bits/regex.tcc: Fix regex_token_iterator::_M_result invariant.
* testsuite/28_regex/iterators/regex_token_iterator/64303.cc: Testcase.

Added:
   
trunk/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/regex.h
trunk/libstdc++-v3/include/bits/regex.tcc


[Bug sanitizer/64289] ICE with -fsanitize=float-cast-overflow

2014-12-17 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64289

--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Wed Dec 17 09:26:49 2014
New Revision: 218811

URL: https://gcc.gnu.org/viewcvs?rev=218811root=gccview=rev
Log:
PR sanitizer/64289
* c-convert.c: Include ubsan.h.
(convert): For real - integral casts and
-fsanitize=float-cast-overflow don't call convert_to_integer, but
instead instrument the float cast directly.

* c-c++-common/ubsan/pr64289.c: New test.

Added:
trunk/gcc/testsuite/c-c++-common/ubsan/pr64289.c
Modified:
trunk/gcc/c/ChangeLog
trunk/gcc/c/c-convert.c
trunk/gcc/testsuite/ChangeLog


[Bug tree-optimization/64322] More optimize opportunity for constant folding

2014-12-17 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64322

--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Wed Dec 17 09:29:12 2014
New Revision: 218812

URL: https://gcc.gnu.org/viewcvs?rev=218812root=gccview=rev
Log:
PR tree-optimization/64322
* tree-vrp.c (extract_range_from_binary_expr_1): Attempt to derive
range for RSHIFT_EXPR even if vr0 range is not VR_RANGE or is symbolic.

* gcc.dg/tree-ssa/vrp95.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp95.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vrp.c


[Bug sanitizer/64336] Template functions are not instrumented at -O0 and -Og

2014-12-17 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64336

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-12-17
 Ever confirmed|0   |1

--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org ---
This sounds like a bug in whatever sets TREE_READONLY on the MEM_REF.
Apparently build2_stat sets read_only = 1 and clears it if the arguments aren't
read-only, but that of course makes no sense for MEM_REF, even if the arguments
are TREE_READONLY, that has nothing to do with TREE_READONLY of the MEM_REF
itself.  So, perhaps:
--- gcc/tree.c.jj 2014-12-15 10:36:23.0 +0100
+++ gcc/tree.c 2014-12-17 10:48:07.216729576 +0100
@@ -4352,7 +4352,7 @@ build2_stat (enum tree_code code, tree t
  arguments are as well.  */
   constant = (TREE_CODE_CLASS (code) == tcc_comparison
   || TREE_CODE_CLASS (code) == tcc_binary);
-  read_only = 1;
+  read_only = TREE_CODE_CLASS (code) != tcc_reference;
   side_effects = TREE_SIDE_EFFECTS (t);

   PROCESS_ARG (0);

?  INDIRECT_REF in build1_stat also sets TREE_READONLY to 0...


[Bug sanitizer/64337] New: ThreadSanitizer: std::thread + lambda false positive

2014-12-17 Thread p.bartosiewi at partner dot samsung.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64337

Bug ID: 64337
   Summary: ThreadSanitizer: std::thread + lambda false positive
   Product: gcc
   Version: 4.9.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: sanitizer
  Assignee: unassigned at gcc dot gnu.org
  Reporter: p.bartosiewi at partner dot samsung.com
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org

I think this is a false positive tsan warning:

$ cat tsan.cpp 
#include thread
#include cstdio

int main() {
int str = 5;
auto f = [=] {
printf(str: %d\n, str);
};
std::thread t(f);
t.join();
}

$ g++ --version
g++ (GCC) 4.9.2 20141101 (Red Hat 4.9.2-1)

$ ./a.out 
str: 5
==
WARNING: ThreadSanitizer: data race (pid=21079)
  Write of size 8 at 0x7d0cefd8 by thread T1:
#0 operator delete(void*) null:0 (libtsan.so.0+0x0004c8c0)
#1 deallocate /usr/include/c++/4.9.2/ext/new_allocator.h:110
(a.out+0x20ed)
#2 deallocate /usr/include/c++/4.9.2/bits/alloc_traits.h:383
(a.out+0x1fdc)
#3 _M_destroy /usr/include/c++/4.9.2/bits/shared_ptr_base.h:535
(a.out+0x2758)
#4 null null:0 (libstdc++.so.6+0x000bae11)

  Previous atomic write of size 4 at 0x7d0cefd8 by main thread:
#0 __tsan_atomic32_fetch_add null:0 (libtsan.so.0+0x00020a7e)
#1 __exchange_and_add /usr/include/c++/4.9.2/ext/atomicity.h:49
(a.out+0x14b0)
#2 __exchange_and_add_dispatch /usr/include/c++/4.9.2/ext/atomicity.h:82
(a.out+0x1567)
#3 std::_Sp_counted_base(__gnu_cxx::_Lock_policy)2::_M_release()
/usr/include/c++/4.9.2/bits/shared_ptr_base.h:146 (a.out+0x2d4f)
#4 std::__shared_count(__gnu_cxx::_Lock_policy)2::~__shared_count()
/usr/include/c++/4.9.2/bits/shared_ptr_base.h:666 (a.out+0x2d1a)
#5 std::__shared_ptrstd::thread::_Impl_base,
(__gnu_cxx::_Lock_policy)2::~__shared_ptr()
/usr/include/c++/4.9.2/bits/shared_ptr_base.h:914 (a.out+0x2c25)
#6 std::shared_ptrstd::thread::_Impl_base::~shared_ptr()
/usr/include/c++/4.9.2/bits/shared_ptr.h:93 (a.out+0x2c51)
#7 threadmain()::lambda() /usr/include/c++/4.9.2/thread:135
(a.out+0x1747)
#8 main tsan.cpp:11 (a.out+0x1606)

  Location is heap block of size 48 at 0x7d0cefd0 allocated by main thread:
#0 operator new(unsigned long) null:0 (libtsan.so.0+0x0004cb42)
#1 allocate /usr/include/c++/4.9.2/ext/new_allocator.h:104
(a.out+0x204d)
#2 allocate /usr/include/c++/4.9.2/bits/alloc_traits.h:357
(a.out+0x1f31)
#3
__shared_countstd::thread::_Implstd::_Bind_simplemain()::lambda()() ,
std::allocatorstd::thread::_Implstd::_Bind_simplemain()::lambda()()  ,
std::_Bind_simplemain()::lambda()() 
/usr/include/c++/4.9.2/bits/shared_ptr_base.h:616 (a.out+0x1dfd)
#4
__shared_ptrstd::allocatorstd::thread::_Implstd::_Bind_simplemain()::lambda()()
 , std::_Bind_simplemain()::lambda()() 
/usr/include/c++/4.9.2/bits/shared_ptr_base.h:1090 (a.out+0x1d2f)
#5
shared_ptrstd::allocatorstd::thread::_Implstd::_Bind_simplemain()::lambda()()
 , std::_Bind_simplemain()::lambda()() 
/usr/include/c++/4.9.2/bits/shared_ptr.h:316 (a.out+0x1cc3)
#6
allocate_sharedstd::thread::_Implstd::_Bind_simplemain()::lambda()() ,
std::allocatorstd::thread::_Implstd::_Bind_simplemain()::lambda()()  ,
std::_Bind_simplemain()::lambda()() 
/usr/include/c++/4.9.2/bits/shared_ptr.h:588 (a.out+0x1c54)
#7 make_sharedstd::thread::_Implstd::_Bind_simplemain()::lambda()()
, std::_Bind_simplemain()::lambda()() 
/usr/include/c++/4.9.2/bits/shared_ptr.h:604 (a.out+0x1b15)
#8 _M_make_routinestd::_Bind_simplemain()::lambda()() 
/usr/include/c++/4.9.2/thread:193 (a.out+0x1995)
#9 threadmain()::lambda() /usr/include/c++/4.9.2/thread:135
(a.out+0x1715)
#10 main tsan.cpp:11 (a.out+0x1606)

  Thread T1 (tid=21081, running) created by main thread at:
#0 pthread_create null:0 (libtsan.so.0+0x0004ac26)
#1 std::thread::_M_start_thread(std::shared_ptrstd::thread::_Impl_base)
null:0 (libstdc++.so.6+0x000baed8)
#2 main tsan.cpp:11 (a.out+0x1606)

SUMMARY: ThreadSanitizer: data race ??:0 operator delete(void*)
==
ThreadSanitizer: reported 1 warnings


[Bug sanitizer/64337] ThreadSanitizer: std::thread + lambda false positive

2014-12-17 Thread p.bartosiewi at partner dot samsung.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64337

--- Comment #1 from Piotr Bartosiewicz p.bartosiewi at partner dot 
samsung.com ---
There is a very similar bug report
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57507
but the code from that one does not trigger a warning with gcc 4.9.


[Bug sanitizer/64337] ThreadSanitizer: std::thread + lambda false positive

2014-12-17 Thread dvyukov at google dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64337

Dmitry Vyukov dvyukov at google dot com changed:

   What|Removed |Added

 CC||dvyukov at google dot com

--- Comment #2 from Dmitry Vyukov dvyukov at google dot com ---
Looks like dup of issue 57507


[Bug libstdc++/64302] The match_results::cbegin()/cend() return incorrect results

2014-12-17 Thread timshen at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64302

--- Comment #2 from Tim Shen timshen at gcc dot gnu.org ---
Author: timshen
Date: Wed Dec 17 10:27:21 2014
New Revision: 218814

URL: https://gcc.gnu.org/viewcvs?rev=218814root=gccview=rev
Log:
2014-12-17  Tim Shen  tims...@google.com

PR libstdc++/64302
PR libstdc++/64303
Backported form mainline
2014-12-17  Tim Shen  tims...@google.com

* include/bits/regex.h (match_results::cbegin, match_results::cend,
regex_token_iterator::regex_token_iterator,
regex_token_iterator::_M_normalize_result): Fix match_results cbegin
and cend and regex_token_iterator::_M_result invariant.
* include/bits/regex.tcc: Fix regex_token_iterator::_M_result invariant.
* testsuite/28_regex/iterators/regex_token_iterator/64303.cc: Testcase.

Added:
   
branches/gcc-4_9-branch/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc
Modified:
branches/gcc-4_9-branch/libstdc++-v3/ChangeLog
branches/gcc-4_9-branch/libstdc++-v3/include/bits/regex.h
branches/gcc-4_9-branch/libstdc++-v3/include/bits/regex.tcc


[Bug libstdc++/64303] The regex_token_iterator's copy constructor creates an incorrect iterator

2014-12-17 Thread timshen at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64303

--- Comment #2 from Tim Shen timshen at gcc dot gnu.org ---
Author: timshen
Date: Wed Dec 17 10:27:21 2014
New Revision: 218814

URL: https://gcc.gnu.org/viewcvs?rev=218814root=gccview=rev
Log:
2014-12-17  Tim Shen  tims...@google.com

PR libstdc++/64302
PR libstdc++/64303
Backported form mainline
2014-12-17  Tim Shen  tims...@google.com

* include/bits/regex.h (match_results::cbegin, match_results::cend,
regex_token_iterator::regex_token_iterator,
regex_token_iterator::_M_normalize_result): Fix match_results cbegin
and cend and regex_token_iterator::_M_result invariant.
* include/bits/regex.tcc: Fix regex_token_iterator::_M_result invariant.
* testsuite/28_regex/iterators/regex_token_iterator/64303.cc: Testcase.

Added:
   
branches/gcc-4_9-branch/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc
Modified:
branches/gcc-4_9-branch/libstdc++-v3/ChangeLog
branches/gcc-4_9-branch/libstdc++-v3/include/bits/regex.h
branches/gcc-4_9-branch/libstdc++-v3/include/bits/regex.tcc


[Bug target/64338] [5 Regression] ICE in swap_condition, at jump.c:628

2014-12-17 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64338

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Target||i?86-*-*
   Target Milestone|--- |5.0


[Bug target/64338] New: [5 Regression] ICE in swap_condition, at jump.c:628

2014-12-17 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64338

Bug ID: 64338
   Summary: [5 Regression] ICE in swap_condition, at jump.c:628
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rguenth at gcc dot gnu.org

Created attachment 34295
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34295action=edit
preprocessed source

 ./cc1plus  -quiet KDChartCartesianAxis.ii  -quiet -mtune=generic -march=i586 
 -g -O2 -fomit-frame-pointer -fno-exceptions -fno-check-new  
 -fno-threadsafe-statics -fvisibility=hidden -fvisibility-inlines-hidden -fPIC 
  -m32
/home/abuild/rpmbuild/BUILD/calligra-2.8.6/3rdparty/kdchart/src/KDChartCartesianAxis.cpp:
In member function 'virtual void
KDChart::CartesianAxis::paintCtx(KDChart::PaintContext*)':
/home/abuild/rpmbuild/BUILD/calligra-2.8.6/3rdparty/kdchart/src/KDChartCartesianAxis.cpp:1426:1:
internal compiler error: in swap_condition, at jump.c:628
0xda1ad1 swap_condition(rtx_code)
/space/rguenther/src/svn/trunk2/gcc/jump.c:628
0xb7664d emit_store_flag_1
/space/rguenther/src/svn/trunk2/gcc/expmed.c:5227
0xb76d47 emit_store_flag(rtx_def*, rtx_code, rtx_def*, rtx_def*, machine_mode,
int, int)
/space/rguenther/src/svn/trunk2/gcc/expmed.c:5434
0x1303358 ix86_expand_int_movcc(rtx_def**)
/space/rguenther/src/svn/trunk2/gcc/config/i386/i386.c:20929
0x1303ab0 ix86_expand_int_movcc(rtx_def**)
/space/rguenther/src/svn/trunk2/gcc/config/i386/i386.c:21098
0x144a08b gen_movqicc(rtx_def*, rtx_def*, rtx_def*, rtx_def*)
/space/rguenther/src/svn/trunk2/gcc/config/i386/i386.md:16600
0xe547c8 insn_gen_fn::operator()(rtx_def*, rtx_def*, rtx_def*, rtx_def*) const
/space/rguenther/src/svn/trunk2/gcc/recog.h:305
0xe53741 maybe_gen_insn(insn_code, unsigned int, expand_operand*)
/space/rguenther/src/svn/trunk2/gcc/optabs.c:8377
0xe53a3e maybe_expand_insn(insn_code, unsigned int, expand_operand*)
/space/rguenther/src/svn/trunk2/gcc/optabs.c:8407
0xe4a8b7 emit_conditional_move(rtx_def*, rtx_code, rtx_def*, rtx_def*,
machine_mode, rtx_def*, rtx_def*, machine_mode, int)
/space/rguenther/src/svn/trunk2/gcc/optabs.c:4614
0x17f2c00 noce_emit_cmove
/space/rguenther/src/svn/trunk2/gcc/ifcvt.c:1498
0x17f31c1 noce_try_cmove
/space/rguenther/src/svn/trunk2/gcc/ifcvt.c:1578
0x17f5d73 noce_process_if_block
/space/rguenther/src/svn/trunk2/gcc/ifcvt.c:2754
0x17f6fa6 noce_find_if_block
/space/rguenther/src/svn/trunk2/gcc/ifcvt.c:3214
0x17f7651 find_if_header
/space/rguenther/src/svn/trunk2/gcc/ifcvt.c:3423
0x17fa187 if_convert
/space/rguenther/src/svn/trunk2/gcc/ifcvt.c:4572
0x17fa4bd execute
/space/rguenther/src/svn/trunk2/gcc/ifcvt.c:4718
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 target/62642] [4.8/4.9/5 Regression] x86 rdtsc is moved through barrier

2014-12-17 Thread M8R-ynb11d at mailinator dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62642

--- Comment #5 from M8R-ynb11d at mailinator dot com ---
I originally put the barriers there in a futile attempt to work around the bug.
 Can anyone tell me whether I actually need them, or whether the intrinsic
carries with it an implicit built-in barrier to prevent reordering?  Ideally
I'd like to write portable code using only intrinsics and not gcc-specific
asm() stuff, so I hope that it's the latter.


[Bug rtl-optimization/64164] [4.9/5 Regression] one more stack slot used due to one less inlining level

2014-12-17 Thread patrick.marlier at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64164

--- Comment #5 from Patrick Marlier patrick.marlier at gmail dot com ---
The regression starts from this commit:

trunk@200103
commit f82f0ea592c2d78077e03f5a1a3b9b40751cc116
Author: law law@138bc75d-0d04-0410-961f-82ee72b054a4
Date:   Fri Jun 14 18:52:32 2013 +

* gimple.h (gimple_can_coalesce_p): Prototype.
* tree-ssa-coalesce.c (gimple_can_coalesce_p): New function.
(create_outofssa_var_map, coalesce_partitions): Use it.
* tree-ssa-uncprop.c (uncprop_into_successor_phis): Similarly.
* tree-ssa-live.c (var_map_base_init): Use TYPE_CANONICAL
if it's available.

* gcc.dg/tree-ssa/coalesce-1.c: New test.

And especially from this:
gcc/tree-ssa-coalesce.c:gimple_can_coalesce_p (tree name1, tree name2)
...

  /* If the types are not the same, check for a canonical type match.  This
 (for example) allows coalescing when the types are fundamentally the
 same, but just have different names. 

 Note pointer types with different address spaces may have the same
 canonical type.  Those are rejected for coalescing by the
 types_compatible_p check.  */

  if (TYPE_CANONICAL (t1)
   TYPE_CANONICAL (t1) == TYPE_CANONICAL (t2)
   types_compatible_p (t1, t2))
return true;

But as Richard mentioned, I think the problem is in the RTL part.


[Bug middle-end/63568] Missed optimization (a ~mask) | (b mask) = a ^ ((a ^ b) mask)

2014-12-17 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63568

--- Comment #9 from Marek Polacek mpolacek at gcc dot gnu.org ---
Author: mpolacek
Date: Wed Dec 17 11:48:33 2014
New Revision: 218816

URL: https://gcc.gnu.org/viewcvs?rev=218816root=gccview=rev
Log:
PR middle-end/63568
* match.pd: Add (x  ~m) | (y  m) - ((x ^ y)  m) ^ x pattern.

* gcc.dg/pr63568.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/pr63568.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/match.pd
trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/63259] Detecting byteswap sequence

2014-12-17 Thread thopre01 at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63259

--- Comment #12 from thopre01 at gcc dot gnu.org ---
(In reply to Oleg Endo from comment #11)
 (In reply to thopre01 from comment #10)
  
  I have the same gimple and for me the bswap is correctly detected. Can you
  break at find_bswap_or_nop just after calling find_bswap_or_nop_1 on the if
  (!source_stmt) and show me the output of p/x n-n ?
 
 n-n = 0x0102  limit = 4

That's good, it means the pattern is recognized. Is there an optab defined for
bswap16?

 
 For both, test_099 and test_08.
 
  Indeed, my mistake. Ok I tested a bit and found that the problem is the
  depth at which it's looking. Try to recompile tree-ssa-math-opts.c after
  increasing the limit number in find_bswap_or_nop. Right now the limit will
  evaluate to 4 and the gimple I have has a depth of 5.
 
 I've tried ...
 
   limit += 10 + (int) ceil_log2 ((unsigned HOST_WIDE_INT) limit);
 
 ... but it doesn't change anything here.

Same as the other pattern, can you try to print n-n in hex with this new
limit? My guess is that the pattern is now recognized but fails later for the
same reason as above.

Best regards.


[Bug middle-end/62103] Incorrect folding of bitfield in a union on big endian targets

2014-12-17 Thread thopre01 at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62103

thopre01 at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #6 from thopre01 at gcc dot gnu.org ---
Fixed in all the branch currently supported


[Bug middle-end/63568] Missed optimization (a ~mask) | (b mask) = a ^ ((a ^ b) mask)

2014-12-17 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63568

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #10 from Marek Polacek mpolacek at gcc dot gnu.org ---
Fixed.


[Bug testsuite/64328] addr_equal-1.c fails execution.

2014-12-17 Thread belagod at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64328

--- Comment #4 from Tejas Belagod belagod at gcc dot gnu.org ---
Author: belagod
Date: Wed Dec 17 12:15:36 2014
New Revision: 218817

URL: https://gcc.gnu.org/viewcvs?rev=218817root=gccview=rev
Log:

PR testsuite/64328
* gcc.dg/addr_equal-1.c: Not supported for -fPIC.


Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/addr_equal-1.c


[Bug testsuite/64328] addr_equal-1.c fails execution.

2014-12-17 Thread belagod at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64328

Tejas Belagod belagod at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

--- Comment #5 from Tejas Belagod belagod at gcc dot gnu.org ---
Fixed by r218817.


[Bug tree-optimization/64322] More optimize opportunity for constant folding

2014-12-17 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64322

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org ---
So, is this fix acceptable to the reporter?  The explanation in the combiner is
that in the first testcase you have multiple uses of the load of 0x1L
constant and therefore it is not attempted to be combined with the second use
(division), changing that is undesirable I think, combine is already expensive
as is.


[Bug middle-end/64182] [5 Regression] wide-int rounding division is broken

2014-12-17 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64182

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||mpolacek at gcc dot gnu.org

--- Comment #10 from Marek Polacek mpolacek at gcc dot gnu.org ---
Fixed?


[Bug middle-end/64339] New: reject unsafe options in pragma GCC optimize

2014-12-17 Thread manu at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64339

Bug ID: 64339
   Summary: reject unsafe options in pragma GCC optimize
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: manu at gcc dot gnu.org

Some options are known to be unsafe to set via pragma GCC optimize. See:
https://sourceware.org/ml/libc-alpha/2014-12/msg00597.html and
https://sourceware.org/ml/libc-alpha/2014-12/msg00599.html

It would be better to add a flag to the *.opt files to mark safe options
explicitly, such that specifying any option that is not safe produces a fatal
error.


[Bug c++/48026] #pragma optimize ignored for C++

2014-12-17 Thread manu at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48026

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

   What|Removed |Added

 CC||manu at gcc dot gnu.org

--- Comment #4 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
This is probably because the preprocessor runs before the #pragmas are handled.
If so, this is the same issue as for #pragma GCC diagnostics in C++ (PR53431).

[Bug sanitizer/64336] Template functions are not instrumented at -O0 and -Og

2014-12-17 Thread bernd.edlinger at hotmail dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64336

--- Comment #3 from Bernd Edlinger bernd.edlinger at hotmail dot de ---
Yes, this patch seems to work...

But why did this only cause problems with template expansions and nothing else
?


[Bug middle-end/64327] ../../gcc/gcc/rtlanal.c:4881:48: runtime error: shift exponent 4294967295 is too large for 64-bit type 'long unsigned int'

2014-12-17 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64327

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-12-17
 CC||mpolacek at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org ---
I see that too.


[Bug target/64338] [5 Regression] ICE in swap_condition, at jump.c:628

2014-12-17 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64338

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-12-17
 CC||trippels at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
(gdb) p code
$1 = UNKNOWN

markus@x4 tmp % cat KDChartCartesianAxis.ii
enum Orientation
{
};
class A
{
public:
  A ();
};
class B
{
public:
  int m_fn1 ();
};
class C
{
  class D;
  D *m_fn2 ();
  void m_fn3 (void *);
  int m_fn4 ();
};
class F
{
public:
  void m_fn5 (const int  = 0);
};
class G
{
public:
  F *m_fn6 ();
};
class H
{
public:
  int subStepWidth;
};
class C::D
{
  friend class C;
  G *m_fn7 ();
};
Orientation a;
void
C::m_fn3 (void *)
{
  int b = a;
  H c;
  if (b)
m_fn2 ()-m_fn7 ()-m_fn6 ()-m_fn5 ();
  double d;
  if (m_fn4 ())
d = c.subStepWidth  0;
  A e (b ? A () : A ());
  B f;
  f.m_fn1 ()  d  m_fn2 ();
}

markus@x4 tmp % g++ -c -mtune=generic -march=i586 -m32 -O2
KDChartCartesianAxis.ii
KDChartCartesianAxis.ii: In member function ‘void C::m_fn3(void*)’:
KDChartCartesianAxis.ii:55:1: internal compiler error: in swap_condition, at
jump.c:628

[Bug target/64254] [5 Regression] FAIL: c-c++-common/torture/vshuf-(v4si|v8hi).c -O* (internal compiler error) between r218540 and r218566.

2014-12-17 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64254

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

   What|Removed |Added

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

--- Comment #3 from Dominique d'Humieres dominiq at lps dot ens.fr ---
The failures for c-c++-common/torture/vshuf-(v4si|v8hi).c are gone at r218812
(they were still present at r218658), see 

https://gcc.gnu.org/ml/gcc-testresults/2014-12/msg02164.html

I have no interest in bisecting the range. The
gcc.target/i386/avx512bw-vpbroadcast[bw]-1.c failures are tracked in pr64311.
Closing as FIXED.


[Bug ipa/63851] [5 Regression] ipa-icf miscompiles gfortran.dg/assumed_rank_(8|9|10).f90 at -O2 and above

2014-12-17 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63851

--- Comment #8 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Results with the patch in comment 5 at
https://gcc.gnu.org/ml/gcc-testresults/2014-12/msg02164.html.

Note that the test gfortran.dg/assumed_rank_10.f90 fails at run time when
compiled with '-O2 -funroll-loops -m32'. Without '-funroll-loops' the test
succeeds at run time.


[Bug middle-end/64340] New: [5 Regression] FAIL: gnat.dg/lto8.adb (internal compiler error)

2014-12-17 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64340

Bug ID: 64340
   Summary: [5 Regression] FAIL: gnat.dg/lto8.adb (internal
compiler error)
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dominiq at lps dot ens.fr

Between revisions r218766 (OK) and r218797 (ICE) the test gnat.dg/lto8.adb has
started to fail. The ICE is

/opt/gcc/p_work/gcc/testsuite/gnat.dg/lto8_pkg.ads: In function
'lto8_pkg___elabs':
/opt/gcc/p_work/gcc/testsuite/gnat.dg/lto8_pkg.ads:4:1: internal compiler
error: in expand_gimple_stmt_1, at cfgexpand.c:3420


[Bug middle-end/64340] [5 Regression] FAIL: gnat.dg/lto8.adb (internal compiler error)

2014-12-17 Thread sch...@linux-m68k.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64340

--- Comment #1 from Andreas Schwab sch...@linux-m68k.org ---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64043#c11


[Bug target/61296] Excessive alignment in ix86_data_alignment

2014-12-17 Thread hjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61296

--- Comment #16 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org ---
Author: hjl
Date: Wed Dec 17 14:22:57 2014
New Revision: 218818

URL: https://gcc.gnu.org/viewcvs?rev=218818root=gccview=rev
Log:
Add -malign-data={abi|compat|cachineline}

Add -malign-data={abi|compat,cachineline} to control how GCC aligns
variables.  compat uses increased alignment value compatible with
GCC 4.8 and earlier, abi uses alignment value as specified by the
psABI, and cacheline uses increased alignment value to match the
cache line size.  compat is the default.

gcc/

PR target/61296
* config/i386/i386-opts.h (ix86_align_data): New enum.
* config/i386/i386.c (ix86_data_alignment): Return the ABI
alignment value for -malign-data=abi, the cachine line size
for -malign-data=cachineline and the older GCC compatible
alignment value for for -malign-data=compat.
* config/i386/i386.opt (malign-data=): New.
* doc/invoke.texi: Document -malign-data=.

gcc/testsuite/

PR target/61296
* gcc.target/i386/pr61296-2.c: New.
* gcc.target/i386/pr61296-2.c: Likewise.
* gcc.target/i386/pr61296-3.c: Likewise.
* gcc.target/i386/pr61296-4.c: Likewise.
* gcc.target/i386/pr61296-5.c: Likewise.
* gcc.target/i386/pr61296-6.c: Likewise.
* gcc.target/i386/pr61296-7.c: Likewise.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr61296-1.c
trunk/gcc/testsuite/gcc.target/i386/pr61296-2.c
trunk/gcc/testsuite/gcc.target/i386/pr61296-3.c
trunk/gcc/testsuite/gcc.target/i386/pr61296-4.c
trunk/gcc/testsuite/gcc.target/i386/pr61296-5.c
trunk/gcc/testsuite/gcc.target/i386/pr61296-6.c
trunk/gcc/testsuite/gcc.target/i386/pr61296-7.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386-opts.h
trunk/gcc/config/i386/i386.c
trunk/gcc/config/i386/i386.opt
trunk/gcc/doc/invoke.texi
trunk/gcc/testsuite/ChangeLog


[Bug tree-optimization/64322] More optimize opportunity for constant folding

2014-12-17 Thread rguenther at suse dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64322

--- Comment #8 from rguenther at suse dot de rguenther at suse dot de ---
On Wed, 17 Dec 2014, jakub at gcc dot gnu.org wrote:

 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64322
 
 --- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org --- So, is 
 this fix acceptable to the reporter?  The explanation in the combiner is 
 that in the first testcase you have multiple uses of the load of 
 0x1L constant and therefore it is not attempted to be combined 
 with the second use (division), changing that is undesirable I think, 
 combine is already expensive as is.

True, though eventually changing this just for constants (thus
(const ...) and CONST_INT and ...) might be worth the additional
overhead.  I can imagine targets that don't support (large)
immediates being pessimized very much otherwise.


[Bug lto/64043] [5 Regression] ICE (segfault) with LTO: in tree_check/tree.h:2758 get_binfo_at_offset/tree.c:11914

2014-12-17 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64043

--- Comment #12 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 This breaks ada: ...

It is now pr64340.


[Bug tree-optimization/64330] [5 Regression] IPA-ICF merges const exported vars that could be addressable in other TUs

2014-12-17 Thread y.gribov at samsung dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64330

Yury Gribov y.gribov at samsung dot com changed:

   What|Removed |Added

 CC||y.gribov at samsung dot com

--- Comment #6 from Yury Gribov y.gribov at samsung dot com ---
(In reply to Jakub Jelinek from comment #5)
 (In reply to Kostya Serebryany from comment #4)
  So, maybe the ODR checker in the current form is not that useless.
  Sorry, couldn't resist :)
 
 But it isn't really an ODR checker.

Basically a symbol aliasing checker.


[Bug target/61296] Excessive alignment in ix86_data_alignment

2014-12-17 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61296

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.0

--- Comment #17 from H.J. Lu hjl.tools at gmail dot com ---
Fixed in GCC 5.


[Bug target/64338] [5 Regression] ICE in swap_condition, at jump.c:628

2014-12-17 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64338

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||mpolacek at gcc dot gnu.org

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
Started with r217646.


[Bug rtl-optimization/64010] [msp430-elf] struct function dereference clobbers parameter passed to function

2014-12-17 Thread uweigand at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64010

--- Comment #12 from Ulrich Weigand uweigand at gcc dot gnu.org ---
Author: uweigand
Date: Wed Dec 17 15:07:28 2014
New Revision: 218821

URL: https://gcc.gnu.org/viewcvs?rev=218821root=gccview=rev
Log:
2014-12-17  Ulrich Weigand  ulrich.weig...@de.ibm.com

Backport from mainline
2014-12-03  Ulrich Weigand  ulrich.weig...@de.ibm.com

PR rtl-optimization/64010
* reload.c (push_reload): Before reusing a register contained
in an operand as input reload register, ensure that it is not
used in CALL_INSN_FUNCTION_USAGE.


Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/reload.c


[Bug rtl-optimization/64010] [msp430-elf] struct function dereference clobbers parameter passed to function

2014-12-17 Thread uweigand at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64010

--- Comment #13 from Ulrich Weigand uweigand at gcc dot gnu.org ---
Since this has been in mainline for two weeks without reported issues, and it
should in general be a safe change, I've backported the patch to 4.9 now.


[Bug rtl-optimization/64010] [msp430-elf] struct function dereference clobbers parameter passed to function

2014-12-17 Thread uweigand at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64010

Ulrich Weigand uweigand at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED
   Assignee|unassigned at gcc dot gnu.org  |uweigand at gcc dot 
gnu.org

--- Comment #14 from Ulrich Weigand uweigand at gcc dot gnu.org ---
Fixed.


[Bug target/64331] regcprop propagates registers noted as REG_DEAD

2014-12-17 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64331

--- Comment #5 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
 Is it just REG_USED/REG_DEAD notes, or is register liveliness
 (df_regs_ever_live_p etc..) also not guaranteed to be up to date?

These REG_UNUSED/REG_DEAD notes are special because they are not maintained
incrementally by the DF framework, i.e. the insn manipulation routines don't
cause them to be updated, so they are really valid only just after they are
recomputed.  The rest of the liveness info is updated incrementally (if DF is
asked to).


[Bug rtl-optimization/64341] [5 regression] ICE in expand_expr_addr_expr_1, at expr.c:7718

2014-12-17 Thread ro at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64341

Rainer Orth ro at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |5.0


[Bug rtl-optimization/64341] New: [5 regression] ICE in expand_expr_addr_expr_1, at expr.c:7718

2014-12-17 Thread ro at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64341

Bug ID: 64341
   Summary: [5 regression] ICE in expand_expr_addr_expr_1, at
expr.c:7718
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ro at gcc dot gnu.org
CC: ebotcazou at gcc dot gnu.org
  Host: sparc*-sun-solaris2.*
Target: sparc*-sun-solaris2.*
 Build: sparc*-sun-solaris2.*

Since 20141021 (r216502), I see a the following ICE on 32-bit Solaris/SPARC:

FAIL: 21_strings/basic_string/modifiers/replace/wchar_t/4.cc (test for excess
errors)
WARNING: 21_strings/basic_string/modifiers/replace/wchar_t/4.cc compilation
failed to produce executable

Excess errors:
/vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/4.cc:29:1:
internal compiler error: in expand_expr_addr_expr_1, at expr.c:7718
0x66fe7f expand_expr_addr_expr_1
/vol/gcc/src/hg/trunk/local/gcc/expr.c:7718
0x66284b expand_expr_addr_expr
/vol/gcc/src/hg/trunk/local/gcc/expr.c:7832
0x66284b expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
/vol/gcc/src/hg/trunk/local/gcc/expr.c:10706

0x66284b expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
/vol/gcc/src/hg/trunk/local/gcc/expr.c:10706
0x54a53f expand_normal
/vol/gcc/src/hg/trunk/local/gcc/expr.h:305
0x54a53f precompute_register_parameters
/vol/gcc/src/hg/trunk/local/gcc/calls.c:869
0x54a53f expand_call(tree_node*, rtx_def*, int)
/vol/gcc/src/hg/trunk/local/gcc/calls.c:3119
0x6619b7 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
/vol/gcc/src/hg/trunk/local/gcc/expr.c:10474
0x55e00b expand_expr
/vol/gcc/src/hg/trunk/local/gcc/expr.h:299
0x55e00b expand_call_stmt
/vol/gcc/src/hg/trunk/local/gcc/cfgexpand.c:2347
0x55e00b expand_gimple_stmt_1
/vol/gcc/src/hg/trunk/local/gcc/cfgexpand.c:3293
0x55e00b expand_gimple_stmt
/vol/gcc/src/hg/trunk/local/gcc/cfgexpand.c:3447
0x563883 expand_gimple_basic_block
/vol/gcc/src/hg/trunk/local/gcc/cfgexpand.c:5280
0x565fdb execute
/vol/gcc/src/hg/trunk/local/gcc/cfgexpand.c:5889

Since 20141030 (r216932), there's another failure with the same ICE, again only
for 32-bit:

FAIL: g++.dg/ipa/pr63587-2.C  -std=gnu++11 (internal compiler error)
FAIL: g++.dg/ipa/pr63587-2.C  -std=gnu++11 (test for excess errors)
FAIL: g++.dg/ipa/pr63587-2.C  -std=gnu++14 (internal compiler error)
FAIL: g++.dg/ipa/pr63587-2.C  -std=gnu++14 (test for excess errors)

Excess errors:
/vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.dg/ipa/pr63587-2.C:21:3: internal
compiler error: in expand_expr_addr_expr_1, at expr.c:7718
0x66fe7f expand_expr_addr_expr_1
/vol/gcc/src/hg/trunk/local/gcc/expr.c:7718
0x66284b expand_expr_addr_expr
/vol/gcc/src/hg/trunk/local/gcc/expr.c:7718
0x66284b expand_expr_addr_expr
/vol/gcc/src/hg/trunk/local/gcc/expr.c:7832
0x66284b expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
/vol/gcc/src/hg/trunk/local/gcc/expr.c:10706
0x54a53f expand_normal
/vol/gcc/src/hg/trunk/local/gcc/expr.h:305
0x54a53f precompute_register_parameters
/vol/gcc/src/hg/trunk/local/gcc/calls.c:869
0x54a53f expand_call(tree_node*, rtx_def*, int)
/vol/gcc/src/hg/trunk/local/gcc/calls.c:3119
0x6619b7 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
/vol/gcc/src/hg/trunk/local/gcc/expr.c:10474
0x67043f store_expr_with_bounds(tree_node*, rtx_def*, int, bool, tree_node*)
/vol/gcc/src/hg/trunk/local/gcc/expr.c:5365
0x678e37 expand_assignment(tree_node*, tree_node*, bool)
/vol/gcc/src/hg/trunk/local/gcc/expr.c:5137
0x55d803 expand_call_stmt
/vol/gcc/src/hg/trunk/local/gcc/cfgexpand.c:2345
0x55d803 expand_gimple_stmt_1
/vol/gcc/src/hg/trunk/local/gcc/cfgexpand.c:3293
0x55d803 expand_gimple_stmt_1
/vol/gcc/src/hg/trunk/local/gcc/cfgexpand.c:3293
0x55d803 expand_gimple_stmt
/vol/gcc/src/hg/trunk/local/gcc/cfgexpand.c:3447
0x563883 expand_gimple_basic_block
/vol/gcc/src/hg/trunk/local/gcc/cfgexpand.c:5280
0x565fdb execute
/vol/gcc/src/hg/trunk/local/gcc/cfgexpand.c:5889

This might be a dup (or at least related) to PR rtl-optimization/64033.

  Rainer


[Bug c/63336] cilkplus array notation ICE in find_rank

2014-12-17 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63336

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-12-17
 CC||mpolacek at gcc dot gnu.org
 Ever confirmed|0   |1

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


[Bug target/63908] [e500v2] float_besselcase failed on e500v2 platforms

2014-12-17 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63908

--- Comment #8 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
Olivier Hainque referred to having a 4.9 version of his patch, I suggest 
you ask him.


[Bug middle-end/64340] [5 Regression] FAIL: gnat.dg/lto8.adb (internal compiler error)

2014-12-17 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64340

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |5.0


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

2014-12-17 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64342

Bug ID: 64342
   Summary: [5 Regression] Tests failing when compiled with '-m32
-fpic' after r216154.
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dominiq at lps dot ens.fr
CC: hjl at gcc dot gnu.org, howarth at bromo dot med.uc.edu,
iains at gcc dot gnu.org, ienkovich at gcc dot gnu.org,
kyukhin at gcc dot gnu.org

The following failures have been caused by r216154 and reported at
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63534#c69

FAIL: gcc.target/i386/avx512f-kandnw-1.c scan-assembler-times kandnw[
t]+[^{\\n]*%k[0-7](?:\\n|[ t]+#) 1
FAIL: gcc.target/i386/funcspec-5.c (test for excess errors)
FAIL: gcc.target/i386/fuse-caller-save-rec.c scan-assembler-not pop
FAIL: gcc.target/i386/fuse-caller-save-rec.c scan-assembler-not push
FAIL: gcc.target/i386/fuse-caller-save-rec.c scan-assembler-times
addl\\t%[re]?dx, %[re]?ax 1
FAIL: gcc.target/i386/fuse-caller-save-xmm.c scan-assembler-times
addpd\\t%xmm1, %xmm0 1
FAIL: gcc.target/i386/fuse-caller-save-xmm.c scan-assembler-times
movapd\\t%xmm0, %xmm1 1
FAIL: gcc.target/i386/fuse-caller-save.c scan-assembler-not pop
FAIL: gcc.target/i386/fuse-caller-save.c scan-assembler-not push
FAIL: gcc.target/i386/fuse-caller-save.c scan-assembler-times
addl\\t%[re]?d[ix], %[re]?ax 1

They require to compile the tests with '-fpic -m32' and are still present at
r218812, see

https://gcc.gnu.org/ml/gcc-testresults/2014-12/msg02164.html
https://gcc.gnu.org/ml/gcc-testresults/2014-12/msg02159.html


[Bug lto/64343] New: [5 Regression] lto compile options

2014-12-17 Thread Joost.VandeVondele at mat dot ethz.ch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64343

Bug ID: 64343
   Summary: [5 Regression] lto compile options
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: lto
  Assignee: unassigned at gcc dot gnu.org
  Reporter: Joost.VandeVondele at mat dot ethz.ch

somewhere between r218726 and r218773 (1day) code compiled  linked with

FCFLAGS  = -flto=jobserver -ffree-form -cpp 
LDFLAGS  = $(FCFLAGS) -O3 -funroll-loops -ffast-math -march=native
-fuse-linker-plugin -flto=jobserver 

seems to remain in unoptimized form, while previously they would be optimized
at -O3. It does now seem like the compile time flags and not the ld flags
control the optimization level of the binary.


[Bug lto/64343] [5 Regression] lto compile options

2014-12-17 Thread Joost.VandeVondele at mat dot ethz.ch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64343

Joost VandeVondele Joost.VandeVondele at mat dot ethz.ch changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org,
   ||Joost.VandeVondele at mat dot 
ethz
   ||.ch

--- Comment #1 from Joost VandeVondele Joost.VandeVondele at mat dot ethz.ch 
---
possibly caused by r218767 ?


[Bug tree-optimization/64330] [5 Regression] IPA-ICF merges const exported vars that could be addressable in other TUs

2014-12-17 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64330

Jan Hubicka hubicka at gcc dot gnu.org changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org

--- Comment #7 from Jan Hubicka hubicka at gcc dot gnu.org ---
I think the test should be something like
 VIRTUAL || -fmerge-all-constants || (!TREE_ADDRESSABLE  !
externally_visible)

te current code seems to miss the externally_visible flag.  Indeed you can not
merge symbols that may have address taken.

How does asan behave with aliases?

Honza


[Bug lto/64343] [5 Regression] lto compile options

2014-12-17 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64343

--- Comment #2 from Jan Hubicka hubicka at gcc dot gnu.org ---
This is intended change. Compiling with -O0 -flto and linking with -O3 will not
really give you -O3 optimized code in earlier compilers either; you will not
get any of early optimizations and inlining will not use any of the more
advanced optimizations.

THe purpose of OPTIMIZE/TARGET_OPTION node streaming is to make LTO closer to
non-LTO copmilation by making the compile time flags to matter.  This allows
you to i.e. combine -ffast-math/-fno-fast-math units well or build part of
program with different target options.


[Bug middle-end/64340] [5 Regression] FAIL: gnat.dg/lto8.adb (internal compiler error)

2014-12-17 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64340

Jan Hubicka hubicka at gcc dot gnu.org changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org

--- Comment #2 from Jan Hubicka hubicka at gcc dot gnu.org ---
Seems more of preloading needs tobe skipped.  I will dig into that.


[Bug sanitizer/64344] New: [5 Regression] [UBSAN] ICE with -fsanitize=float-cast-overflow [ICE in -fsanitize=float-cast-overflow]

2014-12-17 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64344

Bug ID: 64344
   Summary: [5 Regression] [UBSAN] ICE with
-fsanitize=float-cast-overflow [ICE in
-fsanitize=float-cast-overflow]
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P3
 Component: sanitizer
  Assignee: unassigned at gcc dot gnu.org
  Reporter: burnus at gcc dot gnu.org
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org,
mpolacek at gcc dot gnu.org

New since today:


$ gcc -w -fsanitize=float-cast-overflow new8.i

new8.i: In function ‘float2long’:
new8.i:11:23: internal compiler error: in -fsanitize=float-cast-overflow
   *exponent = (int32 )log((double )value);
   ^
0x9058fb gimplify_expr(tree_node**, gimple_statement_base**,
gimple_statement_base**, bool (*)(tree_node*), int)
../../gcc/gimplify.c:8451


For the following program:

/* --*/

typedef enum {
  PARAPROX_Q_EXTRA_FAST = 4
} pthread_cond_t;
extern int drand48_r (struct drand48_data *__restrict __buffer,
   int __reject3)
{
}
typedef int int32;
float2long(int32 *mantisse, int32 *exponent, float value)
{
  *exponent = (int32 )log((double )value);
}

[Bug lto/64343] [5 Regression] lto compile options

2014-12-17 Thread Joost.VandeVondele at mat dot ethz.ch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64343

Joost VandeVondele Joost.VandeVondele at mat dot ethz.ch changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |WONTFIX

--- Comment #3 from Joost VandeVondele Joost.VandeVondele at mat dot ethz.ch 
---
OK,fine with me.


[Bug ipa/64325] [5 Regression] ICE: Segmentation fault

2014-12-17 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64325

Jan Hubicka hubicka at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-12-17
   Assignee|unassigned at gcc dot gnu.org  |hubicka at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Jan Hubicka hubicka at gcc dot gnu.org ---
mine.


[Bug sanitizer/64344] [5 Regression] [UBSAN] ICE with -fsanitize=float-cast-overflow [ICE in -fsanitize=float-cast-overflow]

2014-12-17 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64344

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |5.0

--- Comment #1 from Tobias Burnus burnus at gcc dot gnu.org ---
(In reply to Tobias Burnus from comment #0)
 New since today:
Tested with r218820, I think it was working this morning (r218809?).


 new8.i: In function ‘float2long’:
 new8.i:11:23: internal compiler error: in -fsanitize=float-cast-overflow

Pasto - should have been:


$ gcc -w -fsanitize=float-cast-overflow new8.i

new8.i: In function ‘float2long’:
new8.i:11:23: internal compiler error: in gimplify_expr, at gimplify.c:8451
   *exponent = (int32 )log((double )value);
   ^
0x9058fb gimplify_expr(tree_node**, gimple_statement_base**,
gimple_statement_base**, bool (*)(tree_node*), int)
../../gcc/gimplify.c:8451

[Bug go/61265] gccgo: ICE in verify_gimple_in_seq [GoSmith]

2014-12-17 Thread cmang at google dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61265

--- Comment #2 from Chris Manghane cmang at google dot com ---
A slightly smaller program can reproduce this as well:

package main

var a = [1][0]int{B}[0]
var B = [0]int{}

func main() {}

This error occurs because in Gcc_backend::fill_in_array, the type of B, [0]int,
is represented using build_array_type(int, build_index_type(len - 1)), where
len is 0 in this case, giving it a range of [0:MAX_INT] where it should be
[0:0]. The following patch fixes this behavior:

Index: gcc/go/go-gcc.cc
==
--- a/gcc/go/go-gcc.cc
+++ b/gcc/go/go-gcc.cc
@@ -887,9 +887,13 @@ Gcc_backend::fill_in_array(Btype* fill, Btype*
element_type,

   // build_index_type takes the maximum index, which is one less than
   // the length.
-  tree index_type_tree = build_index_type(fold_build2(MINUS_EXPR, sizetype,
-  length_tree,
-  size_one_node));
+  tree index_type_tree = NULL_TREE;
+  if (length_tree == size_zero_node)
+index_type_tree = build_index_type(size_zero_node);
+  else
+index_type_tree = build_index_type(fold_build2(MINUS_EXPR, sizetype,
+   length_tree,
+   size_one_node));

   tree fill_tree = fill-get_tree();
   TREE_TYPE(fill_tree) = element_type_tree;


[Bug target/64011] Fail to compile pr48335-2.c on big-endian aarch64

2014-12-17 Thread jiwang at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64011

Jiong Wang jiwang at gcc dot gnu.org changed:

   What|Removed |Added

 Target|aarch64-linux-gnu   |aarch64-linux-gnu,
   ||arm-linux-gnu
 Status|NEW |ASSIGNED
Version|4.9.3   |5.0

--- Comment #1 from Jiong Wang jiwang at gcc dot gnu.org ---
the same problem exist on ARM when BFI instruction available, and because there
are more strict constraint, it's actually ICE on ARM.

./cc1 -march=armv7-a -O2 big-bug.c  -nostdinc -mbig-endian

big-bug.c: In function ‘f5’:
big-bug.c:16:1: error: unrecognizable insn:
 }
 ^
(insn 8 7 9 2 (set (zero_extract:SI (subreg:SI (reg/v:SF 112 [ s+4 ]) 0)
(const_int 16 [0x10])
(const_int -8 [0xfff8]))
(reg/v:SI 113 [ x ])) big-bug.c:13 -1
 (nil))
big-bug.c:16:1: internal compiler error: in extract_insn, at recog.c:2327
0xc704af _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
../../gcc/gcc/rtl-error.c:110
0xc704f0 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
../../gcc/gcc/rtl-error.c:118
0xc252b9 extract_insn(rtx_insn*)
../../gcc/gcc/recog.c:2327
0x978084 instantiate_virtual_regs_in_insn
../../gcc/gcc/function.c:1582
0x979461 instantiate_virtual_regs
../../gcc/gcc/function.c:1950
0x979534 execute

[Bug tree-optimization/64330] [5 Regression] IPA-ICF merges const exported vars that could be addressable in other TUs

2014-12-17 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64330

--- Comment #8 from Martin Liška marxin at gcc dot gnu.org ---
Thank you for the missing externally visible attribute.

I've been testing following patch:

diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
index b193200..0685019 100644
--- a/gcc/ipa-icf.c
+++ b/gcc/ipa-icf.c
@@ -1131,8 +1131,12 @@ sem_variable::parse (varpool_node *node, bitmap_obstack
*stack)
   tree decl = node-decl;

   bool readonly = TYPE_P (decl) ? TYPE_READONLY (decl) : TREE_READONLY (decl);
-  bool can_handle = readonly  (DECL_VIRTUAL_P (decl)
-|| !TREE_ADDRESSABLE (decl));
+  if (!readonly)
+return NULL;
+
+  bool can_handle = DECL_VIRTUAL_P (decl)
+   || flag_merge_constants = 2
+   || (!TREE_ADDRESSABLE (decl)  !node-externally_visible);

   if (!can_handle)
 return NULL;

As soon as tests finish, I will send it to ML.

Martin

[Bug go/61263] gccgo: fatal error: schedule: holding locks [GoSmith]

2014-12-17 Thread cmang at google dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61263

Chris Manghane cmang at google dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||cmang at google dot com
 Resolution|--- |FIXED
   Assignee|ian at airs dot com|cmang at google dot com

--- Comment #1 from Chris Manghane cmang at google dot com ---
Ran this one hundred thousand times with GOGC=0 and unmodified GOGC, could not
reproduce at all. Marking as resolved; this might have been fixed with other
various fixes to add type precision to heap.


[Bug tree-optimization/64330] [5 Regression] IPA-ICF merges const exported vars that could be addressable in other TUs

2014-12-17 Thread hubicka at ucw dot cz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64330

--- Comment #9 from Jan Hubicka hubicka at ucw dot cz ---
 Thank you for the missing externally visible attribute.
 
 I've been testing following patch:
 
 diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
 index b193200..0685019 100644
 --- a/gcc/ipa-icf.c
 +++ b/gcc/ipa-icf.c
 @@ -1131,8 +1131,12 @@ sem_variable::parse (varpool_node *node, bitmap_obstack
 *stack)
tree decl = node-decl;
 
bool readonly = TYPE_P (decl) ? TYPE_READONLY (decl) : TREE_READONLY 
 (decl);
 -  bool can_handle = readonly  (DECL_VIRTUAL_P (decl)
 -|| !TREE_ADDRESSABLE (decl));
 +  if (!readonly)
 +return NULL;
 +
 +  bool can_handle = DECL_VIRTUAL_P (decl)
 +   || flag_merge_constants = 2
 +   || (!TREE_ADDRESSABLE (decl)  
 !node-externally_visible);
 
if (!can_handle)
  return NULL;
 
 As soon as tests finish, I will send it to ML.

Thanks, the patch is OK if it passes.
Also please be sure that we won't merge DECL_EXTERNAL at all.  Producing an
extenral
alias is not going to save any code.

Honza
 
 Martin
 
 -- 
 You are receiving this mail because:
 You are on the CC list for the bug.


[Bug fortran/64173] [F03] ICE involving procedure pointer component

2014-12-17 Thread janus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64173

janus at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
 CC||janus at gcc dot gnu.org
Summary|ICE involving derived type  |[F03] ICE involving
   |function pointers   |procedure pointer component

--- Comment #3 from janus at gcc dot gnu.org ---
Here is a slightly reduced test case:


  implicit none

  type :: r_magnus_ivp_t
 integer, allocatable :: jc
 procedure(abscissa_), nopass, pointer :: abscissa_p
  end type

  abstract interface
 function abscissa_ () result (x)
   real, allocatable :: x(:)
 end function
  end interface

contains

 function doinit () result (iv)
   type(r_magnus_ivp_t) :: iv
 end function

end


The backtrace on trunk is:

internal compiler error: in gfc_conv_descriptor_data_set, bei
fortran/trans-array.c:172
0x6803bd gfc_conv_descriptor_data_set(stmtblock_t*, tree_node*, tree_node*)
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-array.c:172
0x694b6c structure_alloc_comps
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-array.c:7785
0x695895 gfc_nullify_alloc_comp(gfc_symbol*, tree_node*, int)
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-array.c:7999
0x6a744e gfc_generate_function_code(gfc_namespace*)
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-decl.c:5806
0x6a6b67 gfc_generate_contained_functions
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-decl.c:4912
0x6a6b67 gfc_generate_function_code(gfc_namespace*)
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans-decl.c:5707
0x67f7b8 gfc_generate_code(gfc_namespace*)
/home/jweil/gcc/gcc50/trunk/gcc/fortran/trans.c:1945
0x6399f0 translate_all_program_units
/home/jweil/gcc/gcc50/trunk/gcc/fortran/parse.c:4949
0x6399f0 gfc_parse_file()
/home/jweil/gcc/gcc50/trunk/gcc/fortran/parse.c:5146
0x678665 gfc_be_parse_file
/home/jweil/gcc/gcc50/trunk/gcc/fortran/f95-lang.c:222


[Bug fortran/64173] [F03] ICE involving procedure pointer component

2014-12-17 Thread janus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64173

janus at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #4 from janus at gcc dot gnu.org ---
Turns out the fix is pretty much trivial:


Index: gcc/fortran/trans-array.c
===
--- gcc/fortran/trans-array.c(Revision 218782)
+++ gcc/fortran/trans-array.c(Arbeitskopie)
@@ -7775,7 +7775,7 @@ structure_alloc_comps (gfc_symbol * der_type, tree
   break;

 case NULLIFY_ALLOC_COMP:
-  if (c-attr.pointer)
+  if (c-attr.pointer || c-attr.proc_pointer)
 continue;
   else if (c-attr.allocatable
 (c-attr.dimension|| c-attr.codimension))


Will commit after regtesting ...


[Bug fortran/61952] ICE allocattion of array of type of type

2014-12-17 Thread janus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61952

janus at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||janus at gcc dot gnu.org
 Resolution|--- |DUPLICATE

--- Comment #3 from janus at gcc dot gnu.org ---
The ICE here is also fixed by the patch for PR 64173, which shows that it is
indeed a duplicate.

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


[Bug fortran/64173] [F03] ICE involving procedure pointer component

2014-12-17 Thread janus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64173

janus at gcc dot gnu.org changed:

   What|Removed |Added

 CC||valeryweber at hotmail dot com

--- Comment #5 from janus at gcc dot gnu.org ---
*** Bug 61952 has been marked as a duplicate of this bug. ***


[Bug middle-end/64340] [5 Regression] FAIL: gnat.dg/lto8.adb (internal compiler error)

2014-12-17 Thread danglin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64340

John David Anglin danglin at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-12-17
 CC||danglin at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #3 from John David Anglin danglin at gcc dot gnu.org ---
Also seen on hppa-unknown-linux-gnu.


[Bug c++/64333] C++14 constexpr gives wrong results when a looping constexpr function is evaluated twice

2014-12-17 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64333

--- Comment #1 from Jason Merrill jason at gcc dot gnu.org ---
Author: jason
Date: Wed Dec 17 20:41:18 2014
New Revision: 218832

URL: https://gcc.gnu.org/viewcvs?rev=218832root=gccview=rev
Log:
PR c++/64333
* constexpr.c (cxx_bind_parameters_in_call): non_constant_args parm.
(cxx_eval_call_expression): Don't cache calls with non-constant args.
(cxx_eval_constant_expression) [COMPOUND_EXPR]: Pass true for lval.
(cxx_eval_unary_expression, cxx_eval_binary_expression)
(cxx_eval_conditional_expression): Passfalse for lval.

Added:
trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-initlist1.C
trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-loop2.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/constexpr.c


[Bug c++/64333] C++14 constexpr gives wrong results when a looping constexpr function is evaluated twice

2014-12-17 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64333

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||jason at gcc dot gnu.org
 Resolution|--- |FIXED
   Assignee|unassigned at gcc dot gnu.org  |jason at gcc dot gnu.org
   Target Milestone|--- |5.0

--- Comment #2 from Jason Merrill jason at gcc dot gnu.org ---
Fixed.


[Bug target/53987] [SH] Unnecessary zero-extension before cmp/eq

2014-12-17 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53987

--- Comment #4 from Oleg Endo olegendo at gcc dot gnu.org ---
It seems that converting unsigned values to signed values, i.e. replacing
zero-extensions with sign-extensions and recombining sign-extensions with loads
could make sense in general.

For example, the following code from CSiBE
mpeg2dec-0.3.1/libmpeg2/motion_comp.s contains sequences like:

_MC_put_x_8_c:
.align 2
.L24:
mov.b   @r5,r0
sett
extu.b  r0,r1
mov.b   @(1,r5),r0
extu.b  r0,r0
addcr1,r0
sharr0
mov.b   r0,@r4
sett
mov.b   @(1,r5),r0
extu.b  r0,r3
mov.b   @(2,r5),r0
extu.b  r0,r1
mov r3,r0
addcr1,r0
sharr0
mov.b   r0,@(1,r4)


Here effectively only 8 bit values are calculated.  The zero-extensions can be
omitted, since the higher bits do not influence the result of the lowest 8 bits
and the higher bits are discarded after the 8 bit stores.


[Bug fortran/64173] [F03] ICE involving procedure pointer component

2014-12-17 Thread janus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64173

--- Comment #6 from janus at gcc dot gnu.org ---
Author: janus
Date: Wed Dec 17 21:12:42 2014
New Revision: 218834

URL: https://gcc.gnu.org/viewcvs?rev=218834root=gccview=rev
Log:
2014-12-17  Janus Weil  ja...@gcc.gnu.org

PR fortran/64173
* trans-array.c (structure_alloc_comps): Do not nullify procedure
pointer components.

2014-12-17  Janus Weil  ja...@gcc.gnu.org

PR fortran/64173
* gfortran.dg/proc_ptr_comp_40.f90: New.

Added:
trunk/gcc/testsuite/gfortran.dg/proc_ptr_comp_40.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-array.c
trunk/gcc/testsuite/ChangeLog


[Bug fortran/64173] [F03] ICE involving procedure pointer component

2014-12-17 Thread janus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64173

janus at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #7 from janus at gcc dot gnu.org ---
Fixed on trunk with r218834. Closing.

Thanks for the report!


[Bug rtl-optimization/64110] [5 Regression] ICE: Max. number of generated reload insns per insn is achieved (90)

2014-12-17 Thread vmakarov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64110

--- Comment #12 from Vladimir Makarov vmakarov at gcc dot gnu.org ---
I've just fixed the problem reported by H.J.


[Bug ipa/63851] [5 Regression] ipa-icf miscompiles gfortran.dg/assumed_rank_(8|9|10).f90 at -O2 and above

2014-12-17 Thread howarth at bromo dot med.uc.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63851

--- Comment #9 from howarth at bromo dot med.uc.edu ---
(In reply to Dominique d'Humieres from comment #8)
 Results with the patch in comment 5 at
 https://gcc.gnu.org/ml/gcc-testresults/2014-12/msg02164.html.
 
 Note that the test gfortran.dg/assumed_rank_10.f90 fails at run time when
 compiled with '-O2 -funroll-loops -m32'. Without '-funroll-loops' the test
 succeeds at run time.

And, as before, appending -fno-ipa-icf to the failing test cases compile flags
suppresses the failure.


[Bug rtl-optimization/64110] [5 Regression] ICE: Max. number of generated reload insns per insn is achieved (90)

2014-12-17 Thread vmakarov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64110

--- Comment #13 from Vladimir Makarov vmakarov at gcc dot gnu.org ---
(In reply to Jakub Jelinek from comment #11)
 Looking at the generated assembly, I see there:
 movw%di, -80(%rbp)
 vpbroadcastw-80(%rbp), %ymm1
 vmovdqa %ymm1, -80(%rbp)
 I'd have expected
 vmovd   %edi, %xmm1
 vpbroadcastw%xmm1, %ymm1
 vmovdqa %ymm1, -80(%rbp)
 Is there some bug in the *vec_dupv16hi pattern that LRA can't use the !r
 alternative?  %di should be valid nonimmediate_operand in HImode.  For e.g.

I know about the problem.  It is coming from a different treatment of ! in LRA
and reload.  I am going to work on this but as the fix would be in very
sensitive LRA part. I am afraid to fix it before my vacation.  So probably it
will be solved only in January.


[Bug target/39570] cabs and cabsf are named differently on NetBSD 5

2014-12-17 Thread kuehro at gmx dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39570

Kai-Uwe Eckhardt kuehro at gmx dot de changed:

   What|Removed |Added

 CC||kuehro at gmx dot de

--- Comment #12 from Kai-Uwe Eckhardt kuehro at gmx dot de ---
Created attachment 34296
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34296action=edit
a set of four patches for snapshot 20141214

I have used the darwin files as templates and made the necessary changes. It
reduces test failures from over 15000 (all run tests) to 27 in 3 files (patch
for PR 48244 applied as well).


[Bug go/61265] gccgo: ICE in verify_gimple_in_seq [GoSmith]

2014-12-17 Thread cmang at google dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61265

--- Comment #3 from Chris Manghane cmang at google dot com ---
Sorry for the noise, responding with new information as I discover it.

The above patch doesn't really work (it fails a few tests) because this isn't a
problem with zero-sized array types, but rather a problem with zero-sized
elements in array types.

This same bug can be reproduced by

package main

var a = [1]struct{}{B}[0]
var B = struct{}{}

func main(){}

because struct{} is a zero-sized type and the backend implementation makes
assumptions about zero-sized globals for the linker. A better approach is to
just avoid constructing an array of zero-sized values and evaluate the
zero-valued expressions for their side effects. This is be done in
https://codereview.appspot.com/191970043/.


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

2014-12-17 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64345

Bug ID: 64345
   Summary: [SH] Improve single bit extraction
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: olegendo at gcc dot gnu.org
Target: sh*-*-*

Single bit extractions can be done through the T bit.
Some examples:

unsigned int test0 (unsigned int x)
{
  return ((x  4) ^ 1)  1;
}

unsigned int test1 (unsigned int x)
{
  return ((x  4)  1) ^ 1;
}

unsigned int test2 (unsigned int x)
{
  return ~(x  4)  1;
}

now:
mov r4,r0
shlr2   r0
shlr2   r0
xor #1,r0
and #1,r0

non-sh2a:
mov r4,r0
tst #(14),r0
movtr0

sh2a:
bld #4,r4
movrt   r0


unsigned int test3 (unsigned int x)
{
  return ((~x  4)  1);
}

now:
not r4,r4
mov r4,r0
shlr2   r0
shlr2   r0
rts
and #1,r0

non-sh2a:
mov r4,r0
tst #(14),r0
movtr0

sh2a:
bld #4,r4
movrt   r0


unsigned int test4 (unsigned int x)
{
  return (x  4)  1;
}

now:
mov r4,r0
shlr2   r0
shlr2   r0
and #1,r0

non-sh2:
not r4,r0
tst #(14),r0
movtr0

sh2a (1):
mov r4,r0
tst #(14),r0
movrt   r0

sh2a (2)
bld #4,r4
movtr0


This can be realized by implementing zero_extract combine patterns such as:
set (reg:SI 170 [ D.1727 ])
(zero_extract:SI (xor:SI (reg:SI 4 r4 [ x ])
(const_int 16 [0x10]))
(const_int 1 [0x1])
(const_int 4 [0x4])))

Using the recently added support for multi-set patterns in combine, the T bit
contents can be described exactly, instead of simply T bit clobbers.

If the bit position is 0...7 the SH2A bld insn can be used.  For higher bit
positions it might be better to load a constant and use the tst rm,rn insn.  

Alternatively the reg can be shifted right via shlr8 and shlr16 before the tst
insn.  However, in this case it's probably better to use a shld + and #1,r0
sequence, if dynamic shifts are available.  Although that forces the result
value into r0, which might need to be moved into another reg.  With the tst
insn, r0 is used only as a temporary scratch register.


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

2014-12-17 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51244

--- Comment #81 from Oleg Endo olegendo at gcc dot gnu.org ---
Author: olegendo
Date: Wed Dec 17 22:52:21 2014
New Revision: 218847

URL: https://gcc.gnu.org/viewcvs?rev=218847root=gccview=rev
Log:
gcc/
PR target/51244
* config/sh/sh_treg_combine.cc (sh_treg_combine::try_optimize_cbranch):
Combine ccreg inversion and cbranch into inverted cbranch.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/sh/sh_treg_combine.cc


[Bug c/59708] clang-compatible checked arithmetic builtins

2014-12-17 Thread pthaugen at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59708

--- Comment #30 from Pat Haugen pthaugen at gcc dot gnu.org ---
(In reply to Pat Haugen from comment #29)
 (In reply to Jakub Jelinek from comment #28)
  Assuming fixed.
 
 builtin-arith-overflow-14/17 are fixed with the patch, but
 builtin-arith-overflow-1/10/11 still fail for me.
 
 

builtin-arith-overflow-1 has been fixed by testsuite patch.
builtin-arith-overflow-10/11 are target problem, I'm working on a fix.


[Bug rtl-optimization/64110] [5 Regression] ICE: Max. number of generated reload insns per insn is achieved (90)

2014-12-17 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64110

--- Comment #14 from Jakub Jelinek jakub at gcc dot gnu.org ---
(In reply to Vladimir Makarov from comment #13)
 (In reply to Jakub Jelinek from comment #11)
  Looking at the generated assembly, I see there:
  movw%di, -80(%rbp)
  vpbroadcastw-80(%rbp), %ymm1
  vmovdqa %ymm1, -80(%rbp)
  I'd have expected
  vmovd   %edi, %xmm1
  vpbroadcastw%xmm1, %ymm1
  vmovdqa %ymm1, -80(%rbp)
  Is there some bug in the *vec_dupv16hi pattern that LRA can't use the !r
  alternative?  %di should be valid nonimmediate_operand in HImode.  For e.g.
 
 I know about the problem.  It is coming from a different treatment of ! in
 LRA and reload.  I am going to work on this but as the fix would be in very
 sensitive LRA part. I am afraid to fix it before my vacation.  So probably
 it will be solved only in January.

Np, and thanks a lot.

The ! has been added by me for PR63594, so it isn't there from the era when
i?86 backend was using reload.  If there is a better way to express that RA
should prefer to use memory or xmm register and only use r constraint if it
already is in a r register and doesn't need to be reloaded, I can use that. 
Whether it is ?, ??? or something else.  ! description in gcc docs just fitted
most what I wanted...


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

2014-12-17 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51244

--- Comment #82 from Oleg Endo olegendo at gcc dot gnu.org ---
Author: olegendo
Date: Wed Dec 17 23:08:14 2014
New Revision: 218850

URL: https://gcc.gnu.org/viewcvs?rev=218850root=gccview=rev
Log:
gcc/
PR target/51244
* config/sh/sh_treg_combine.cc (is_conditional_insn): New function.
(cbranch_trace): Add member rtx* condition_rtx_in_insn, initialize it
accordingly in constructor.
(cbranch_trace::branch_condition_rtx_ref): New function.
(cbranch_trace::branch_condition_rtx): Use branch_condition_rtx_ref.
(sh_treg_combine::try_invert_branch_condition): Invert condition rtx
in insn using reversed_comparison_code and validate_change instead of
invert_jump_1.
(sh_treg_combine::execute): Look for conditional insns in basic blocks
in addition to conditional branches.
* config/sh/sh.md (*movsicc_div0s): Remove combine patterns.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/sh/sh.md
trunk/gcc/config/sh/sh_treg_combine.cc


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

2014-12-17 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51244

--- Comment #83 from Oleg Endo olegendo at gcc dot gnu.org ---
(In reply to Oleg Endo from comment #71)
 
 * The RTL pass does the treg combine only when there is a conditional
 branch.  It should also handle conditional move insns (-mpretend-cmove).
 

It does now.  It also handles nott cbranch sequences by inverting the branch
condition and deleting the nott insn.


[Bug c++/64346] New: gcc generates incorrect debug info for ctor/dtor

2014-12-17 Thread dehao at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64346

Bug ID: 64346
   Summary: gcc generates incorrect debug info for ctor/dtor
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dehao at gcc dot gnu.org

#cat a.cc
#include iostream
#include memory

class ABC {
public:
 ABC() {printf(abc\n);}
 ~ABC() {printf(xyz\n);}
};

int foo() {
  std::unique_ptrABC a(new ABC());
}

#g++4.8 a.cc -c -O2 -std=c++11 -g -fno-exceptions
#addr2line -e a.o -i -f 0x13
_ZN3ABCC1Ev
/usr/local/google/home/dehao/gcc/gcc-4_9/debug/a.cc:5
_Z3foov
/usr/local/google/home/dehao/gcc/gcc-4_9/debug/a.cc:10

#g++4.9 a.cc -c -O2 -std=c++11 -g -fno-exceptions
#addr2line -e a.o -i -f 0x13
_ZN3ABCC4Ev
/usr/local/google/home/dehao/gcc/gcc-4_9/debug/a.cc:5
_Z3foov
/usr/local/google/home/dehao/gcc/gcc-4_9/debug/a.cc:10

#g++4.9 a.cc -c -O0 -std=c++11 -g -fno-exceptions
#nm a.o |grep ABCC
 W _ZN3ABCC1Ev
 W _ZN3ABCC2Ev
 n _ZN3ABCC5Ev

Note that for the gcc 4.9 version and later, without any optimization
_ZN3ABCC4Ev does not exists in the symbol table. So we expect either
_ZN3ABCC1Ev or _ZN3ABCC2Ev in the addr2line result.


[Bug c++/64346] gcc generates incorrect debug info for ctor/dtor

2014-12-17 Thread dehao at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64346

dehao at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P2
 CC||ccoutant at gcc dot gnu.org,
   ||davidxl at google dot com,
   ||jason at gcc dot gnu.org

--- Comment #1 from dehao at gcc dot gnu.org ---
This may be related to https://gcc.gnu.org/ml/gcc-patches/2013-11/msg02724.html

Jason could you help take a look?


[Bug rtl-optimization/64157] [5.0 regression] FAIL: gcc.dg/torture/pr52429.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (internal compiler error)

2014-12-17 Thread tbsaunde at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64157

tbsaunde at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||tbsaunde at gcc dot gnu.org
 Resolution|--- |DUPLICATE

--- Comment #1 from tbsaunde at gcc dot gnu.org ---
duping

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


[Bug target/64047] [5 Regression] ICE: Segmentation fault when compiling gcc.dg/torture/pr52429.c

2014-12-17 Thread tbsaunde at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64047

tbsaunde at gcc dot gnu.org changed:

   What|Removed |Added

 CC||sch...@linux-m68k.org

--- Comment #2 from tbsaunde at gcc dot gnu.org ---
*** Bug 64157 has been marked as a duplicate of this bug. ***


[Bug c++/64346] gcc generates incorrect debug info for ctor/dtor

2014-12-17 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64346

--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org ---
_ZN3ABCC4Ev

That is the internal name of the function (it demangles to ABC::ABC() anyways)
and the symbol does not need to be in the symbol table at all.

We are going to run into this more with ICF also.  I think there might have
been a RFC about how to handle the debugging for commoning of functions but it
might be a while before that is implemented.


[Bug c++/64346] gcc generates incorrect debug info for ctor/dtor

2014-12-17 Thread dehao at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64346

--- Comment #3 from dehao at gcc dot gnu.org ---
For AutoFDO, we actually needs symbols from the symbol table because indirect
call promotion needs the symbol name to find the right callee.

You are right, ICF also causes trouble to AutoFDO profile.


[Bug c/64347] New: constructor priorities are not supported in avr-gcc

2014-12-17 Thread cameron at tacklind dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64347

Bug ID: 64347
   Summary: constructor priorities are not supported in avr-gcc
   Product: gcc
   Version: 4.9.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: cameron at tacklind dot com

In avr-gcc, if you try to add a priority to a constructor function, you get:
error: constructor priorities are not supported

Steps to reproduce:

# echo 'void init() __attribute__((constructor(TEST)));'  test.c
# echo 'int main() {return 0;}'  test.c

Compiles with no errors
# gcc test.c -D TEST=1000
# avr-gcc test.c -D TEST=

Does not compile
# avr-gcc test.c -D TEST=1000


[Bug ipa/63851] [5 Regression] ipa-icf miscompiles gfortran.dg/assumed_rank_(8|9|10).f90 at -O2 and above

2014-12-17 Thread howarth at bromo dot med.uc.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63851

--- Comment #10 from howarth at bromo dot med.uc.edu ---
(In reply to Dominique d'Humieres from comment #8)
 Results with the patch in comment 5 at
 https://gcc.gnu.org/ml/gcc-testresults/2014-12/msg02164.html.
 
 Note that the test gfortran.dg/assumed_rank_10.f90 fails at run time when
 compiled with '-O2 -funroll-loops -m32'. Without '-funroll-loops' the test
 succeeds at run time.

Also '-O1 -fipa-icf -funroll-loops -m32' produces a assumed_rank_10.exe which
fails the execution test while '-O0 -fipa-icf -funroll-loops -m32' produces one
which passes.


[Bug middle-end/62178] [5.0 regression] [AArch64] Performance regression on matrix matrix multiply due to r211211

2014-12-17 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62178

--- Comment #6 from amker at gcc dot gnu.org ---
Author: amker
Date: Thu Dec 18 02:53:42 2014
New Revision: 218855

URL: https://gcc.gnu.org/viewcvs?rev=218855root=gccview=rev
Log:

PR tree-optimization/62178
* tree-ssa-loop-ivopts.c (cheaper_cost_with_cand): New function.
(iv_ca_replace): New function.
(try_improve_iv_set): New parameter try_replace_p.
Break local optimal fixed-point by calling iv_ca_replace.
(find_optimal_iv_set_1): Pass new argument to try_improve_iv_set.

gcc/testsuite/ChangeLog
PR tree-optimization/62178
* gcc.target/aarch64/pr62178.c: New test.


Added:
trunk/gcc/testsuite/gcc.target/aarch64/pr62178.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-loop-ivopts.c


[Bug middle-end/62178] [5.0 regression] [AArch64] Performance regression on matrix matrix multiply due to r211211

2014-12-17 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62178

--- Comment #7 from amker at gcc dot gnu.org ---
Should be fixed.


[Bug target/58623] lack of ldp/stp optimization

2014-12-17 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58623

--- Comment #7 from amker at gcc dot gnu.org ---
Hi Evandro,
There is specific PR for this issue.  But as we know, fwprop often corrupts
optimizations on address expression, for below example:

   add rb, r1, r2
   ldr rx, [rb]
   add rb, rb, #4

It's transformed into below by fwprop:

   add rb, r1, r2
   ldr rx, [r1, r2]
   add rb, rb, #4

This corrupts post-increment opportunity.  Though in different form, it's
actually same issue as in ldp/stp.

I think https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44883 describes the
problem in some manner, and there might be other PR about it too.


[Bug tree-optimization/61931] Wrong Constant Folding

2014-12-17 Thread ishiura-compiler at ml dot kwansei.ac.jp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61931

--- Comment #2 from Ishiura Lab Compiler Team ishiura-compiler at ml dot 
kwansei.ac.jp ---
We are sorry for having reported an error program with undefined behavior.
We have redone minimization. The resulting program is as follows.

$ cat test.c

int a = 1;
int b = 0;
int c = 1;
int d = 1;
long long e = 2LL;
long long f = 1LL;
unsigned long long g = 0xLLU;

int main (void)
{
  int   h = 1;
  int   i = (1 / a) - 1;   
  int   j = h  (i = 1U);
  long long k = 1LL  (g + 3LLU); 
  long long l = k  1;
  long long m = (b | l) / 3;   
  long long n = (a - m) | 1;   
  long long o = 1 - ((0 | n) ^ j); 
  long long p = 1 | (3 * f);   
  long long q = p  (a = 0); 
  long long r = (e  2) % 3;   
c = r = (q || d); 
  long long s = (1LL % d) * a; 

  if (o != -2LL) __builtin_printf (o = %lld\n, o);
  if (s !=  0LL) __builtin_printf (%lld, 0LL);

  return 0;
}

$ arm-none-eabi-gcc-4.8.4 test.c -o test.out -O2 --specs=rdimon.specs
$ qemu-arm -L /usr/arm-linux-gnueabihf/ ./test.out
o = 164686225997822

$ arm-none-eabi-gcc-4.8.4 test.c -o test.out -O1 --specs=rdimon.specs
$ qemu-arm -L /usr/arm-linux-gnueabihf/ ./test.out