[Bug target/63661] [4.9 Regression] -O2 miscompiles with -mtune=nehalem or corei7

2014-12-03 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63661

Renlin Li  changed:

   What|Removed |Added

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

--- Comment #30 from Renlin Li  ---
4.9 branch is fixed by r218306
trunk is fixed by r217783


[Bug target/63661] [4.9/5 Regression] -O2 miscompiles with -mtune=nehalem or corei7

2014-11-26 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63661

--- Comment #23 from Renlin Li  ---
I am using x86_64-unknown-linux-gnu-gcc toolchain.

Reproduce the issue in 4.9 branch with "-O2 -fPIC -mtune=native" options.

With 4.9.2 release, I reproduced the problem with "-O2 -fPIC -mtune=nehalem"
options.

I have verified that, after my patch(r217783), both cases are fixed.

Issue is not there anymore in the latest trunk, it is presumably fixed by my
patch already.


[Bug middle-end/63762] [ARM]GCC generates UNPREDICTABLE STR with Rn = Rt when hard-float abi is used

2014-11-19 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63762

Renlin Li  changed:

   What|Removed |Added

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

--- Comment #6 from Renlin Li  ---
fix r217783


[Bug target/63762] [ARM]GCC generates UNPREDICTABLE STR with Rn = Rt when hard-float abi is used

2014-11-13 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63762

--- Comment #3 from Renlin Li  ---
Created attachment 33957
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33957&action=edit
ira dump


[Bug target/63762] [ARM]GCC generates UNPREDICTABLE STR with Rn = Rt when hard-float abi is used

2014-11-13 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63762

--- Comment #2 from Renlin Li  ---
r278 is derived from r224 which is a VFP_LO_REGS.

find_cost_and_classes assigns r278's class as GENERAL_REGS, and assign it
hard_reg 2. Another new pseudo register r290 is created from r278, and assigned
to the same hard_register and register class (GENERAL_REGS).

The pref_class of r290 is derived from its original reg (r224), which is
VFP_LO_REGS

In lra during the hard register assignment process, conflict is checked for
r302 which is a GENERAL_REGS. r290 is not considered, because of different
register classes(reg_pref[290].pref_class == VFP_LO_REGS ). Hard register
number 2 is chosen in this case.


[Bug target/63762] [ARM]GCC generates UNPREDICTABLE STR with Rn = Rt when hard-float abi is used

2014-11-06 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63762

--- Comment #1 from Renlin Li  ---
I am starting to work on this issue.


[Bug target/63762] New: [ARM]GCC generates UNPREDICTABLE STR with Rn = Rt when hard-float abi is used

2014-11-06 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63762

Bug ID: 63762
   Summary: [ARM]GCC generates UNPREDICTABLE STR with Rn = Rt when
hard-float abi is used
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: renlin.li at arm dot com
CC: marcus.shawcroft at arm dot com, ramana.radhakrishnan at 
arm dot com
Target: arm*

Created attachment 33910
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33910&action=edit
test case

This was reported on a public mailing list on 2014-10-25:
http://lists.debian.org/debian-arm/2014/10/msg00057.html

The problem is reproducible with a recent FSF compiler:

$arm-none-eabi-gcc -mfloat-abi=hard -O2 -c unpreditable-str.c

or

$arm-none-linux-gnueabihf-gcc -O2 -c unpreditable-str.c 


/tmp/ccWQsFwY.s: Assembler messages:
/tmp/ccWQsFwY.s:176: Warning: source register same as write-back base

In this case the assembler is giving a warning rather than an error but the
instruction ("str r2, [r2], #4" in this case) is UNPREDICTABLE.


[Bug middle-end/61529] [5 Regression] ICE on valid code at -O3 on x86_64-linux-gnu in check_probability, at basic-block.h:953

2014-10-28 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61529

--- Comment #9 from Renlin Li  ---
r215830 fixes this ICE


[Bug target/63424] Octave -O3 build: internal compiler error: in prepare_cmp_insn, at optabs.c:4237

2014-10-28 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63424

--- Comment #3 from Renlin Li  ---
I am working on this issue, and a patch is more or less done for it.


[Bug middle-end/61529] [5 Regression] ICE on valid code at -O3 on x86_64-linux-gnu in check_probability, at basic-block.h:953

2014-10-24 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61529

--- Comment #8 from Renlin Li  ---
I believe we observed the same behavior, and the first commit to cause the ICE
is r215739.

The newly introduced recompute_probabilities will set the probability back to
REG_BR_PROB_BASE. I will further dig into it.


[Bug target/63424] Octave -O3 build: internal compiler error: in prepare_cmp_insn, at optabs.c:4237

2014-10-22 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63424

--- Comment #2 from Renlin Li  ---
VEC_COND_EXPR with V2DI mode is generated as aarch64 target supports it
(vcond). The VEC_COND_EXPR expression will further folded into
MIN_EXPR/MAX_EXPR expression in the dom pass.

However, aarch64 min/max expanders don't support V2DI mode. The compiler tries
to generate compare and jump sequence for this, and no vector compare can be
found(aarch64 dose have one, however, the compiler uses cbranch as a key to
search for a compare insn). And no library function is provided, it asserts.


[Bug target/63424] Octave -O3 build: internal compiler error: in prepare_cmp_insn, at optabs.c:4237

2014-10-21 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63424

Renlin Li  changed:

   What|Removed |Added

 CC||renlin.li at arm dot com

--- Comment #1 from Renlin Li  ---
uminv2di is missing in this specific case.


[Bug middle-end/61529] [5 Regression] ICE on valid code at -O3 on x86_64-linux-gnu in check_probability, at basic-block.h:953

2014-10-17 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61529

--- Comment #6 from Renlin Li  ---
emit_case_nodes calls conditional_probability with a very large first argument. 

After GCOV_COMPUTE_SCALE calculation, the result overflows into a negative
number.

It's recorded into the cmp_and_jump rtx as a note which is later read and
trigger the assertion.


[Bug middle-end/61529] [5 Regression] ICE on valid code at -O3 on x86_64-linux-gnu in check_probability, at basic-block.h:953

2014-10-17 Thread renlin.li at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61529

Renlin Li  changed:

   What|Removed |Added

 CC||renlin.li at arm dot com

--- Comment #5 from Renlin Li  ---
Confirm same problem while compiling glibc using arm toolchain with
-march=armv7-a -O2 configuration.


(In reply to David Binderman from comment #4)
> (In reply to Jakub Jelinek from comment #3)
> > Started with r210538.
> 
> I am seeing something similar when compiling glibc
> with trunk 20141001 with only -O2.
> 
> ../iconv/skeleton.c: In function ‘gconv’:
> ../iconv/skeleton.c:792:1: internal compiler error: in check_probability, at
> basic-block.h:959
>  }
>  ^
> 0x10685aa check_probability
> ../../src/trunk/gcc/basic-block.h:959
> 0x10685aa apply_probability
> ../../src/trunk/gcc/basic-block.h:988
> 0x10685aa compute_outgoing_frequencies
> ../../src/trunk/gcc/cfgbuild.c:545
> 0x10685aa find_many_sub_basic_blocks(simple_bitmap_def*)
> ../../src/trunk/gcc/cfgbuild.c:636
> 
> Code ok with 20140927.

[Bug target/59787] [ARM] mmx-2.c causes ICE when GCC is configured for cortex-a5/vfpv3-d16-fp16

2014-01-15 Thread renlin.li at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59787

--- Comment #5 from Renlin Li  ---
(In reply to Richard Earnshaw from comment #4)
> Is this fixed now?

Yes, and the patch has already been committed


[Bug target/59787] [ARM] mmx-2.c causes ICE when GCC is configured for cortex-a5/vfpv3-d16-fp16

2014-01-14 Thread renlin.li at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59787

Renlin Li  changed:

   What|Removed |Added

 CC||renlin.li at arm dot com,
   ||yufeng at gcc dot gnu.org

--- Comment #1 from Renlin Li  ---
Confirm that, gcc.target/arm/mmx-2.c cause an ICE with the following
configuration.
--target=arm-none-linux-gnueabihf
--with-arch=armv7-a
--with-fpu=vfpv3-d16
--with-float=softfp


(insn 51 50 52 2 (set (reg:DI 534 [orig:139 D.4720 ] [139])
(mem/v/c:DI (plus:SI (reg/f:SI 102 sfp)
(const_int -20 [0xffec])) [0 llsink+0 S8 A64]))
mmx-2.c:4
2 447 {*iwmmxt_arm_movdi}
 (nil))

(insn 573 0 0 (set (reg:DI 139 [ D.4720 ])
(reg:DI 534 [orig:139 D.4720 ] [139])) -1
 (nil))

lra_constraints() keeps reloading  until Max. number of reload insns
is reached.