Re: Ping: always supply a mode to plus_constant

2012-06-16 Thread H.J. Lu
On Sat, May 5, 2012 at 3:23 PM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, May 3, 2012 at 11:15 AM, Richard Sandiford
 rdsandif...@googlemail.com wrote:
 Ping for this patch to always supply a mode to plus_constant:

    http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00892.html

 I've done a diff of the changes since the original test revision
 (which was r186448 FWIW) and there's only been one plus_constant-
 related change since then: Alan's rs6000 prologue/epilogue fixes.
 I'd repeat the original testing before committing.


 This caused:

 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53249



It also caused:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53698

-- 
H.J.


Re: Ping: always supply a mode to plus_constant

2012-05-15 Thread Eric Botcazou
 The following patch fixes the build (not reg-tested, but looks obvious):

 2012-05-14  Tristan Gingold  ging...@adacore.com

   * config/ia64/ia64.c (ia64_expand_prologue): Adjust calls to
 plus_constant.

Applied as obvious after fixing the ChangeLog.

-- 
Eric Botcazou


Re: Ping: always supply a mode to plus_constant

2012-05-14 Thread Richard Guenther
On Sun, May 6, 2012 at 12:23 AM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, May 3, 2012 at 11:15 AM, Richard Sandiford
 rdsandif...@googlemail.com wrote:
 Ping for this patch to always supply a mode to plus_constant:

    http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00892.html

 I've done a diff of the changes since the original test revision
 (which was r186448 FWIW) and there's only been one plus_constant-
 related change since then: Alan's rs6000 prologue/epilogue fixes.
 I'd repeat the original testing before committing.


 This caused:

 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53249

It also casuses IA64 build to fail for me:

/gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c: In function
'ia64_emit_probe_stack_range':
/gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c:3279: error:
incompatible type for argument 1 of 'plus_constant'
/gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c:3279: warning:
passing argument 2 of 'plus_constant' makes pointer from integer
without a cast
/gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c:3279: error:
too few arguments to function 'plus_constant'
/gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c:3330: error:
incompatible type for argument 1 of 'plus_constant'
...

Richard.


 --
 H.J.


Re: Ping: always supply a mode to plus_constant

2012-05-14 Thread Richard Sandiford
Richard Guenther richard.guent...@gmail.com writes:
 On Sun, May 6, 2012 at 12:23 AM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, May 3, 2012 at 11:15 AM, Richard Sandiford
 rdsandif...@googlemail.com wrote:
 Ping for this patch to always supply a mode to plus_constant:

    http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00892.html

 I've done a diff of the changes since the original test revision
 (which was r186448 FWIW) and there's only been one plus_constant-
 related change since then: Alan's rs6000 prologue/epilogue fixes.
 I'd repeat the original testing before committing.


 This caused:

 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53249

 It also casuses IA64 build to fail for me:

 /gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c: In function
 'ia64_emit_probe_stack_range':
 /gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c:3279: error:
 incompatible type for argument 1 of 'plus_constant'
 /gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c:3279: warning:
 passing argument 2 of 'plus_constant' makes pointer from integer
 without a cast
 /gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c:3279: error:
 too few arguments to function 'plus_constant'
 /gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c:3330: error:
 incompatible type for argument 1 of 'plus_constant'
 ...

I think this was:

2012-05-10  Eric Botcazou  ebotca...@adacore.com
Tristan Gingold  ging...@adacore.com

* doc/md.texi (Standard Names): Document probe_stack_address.
* explow.c (emit_stack_probe): Handle probe_stack_address.
* config/ia64/ia64.md (UNSPECV_PROBE_STACK_ADDRESS): New constant.
(UNSPECV_PROBE_STACK_RANGE): Likewise.
(probe_stack_address): New insn.
(probe_stack_range): Likewise.
* config/ia64/ia64.c: Include common/common-target.h.
(ia64_compute_frame_size): Mark r2 and r3 as used if static stack
checking is enabled.
(ia64_emit_probe_stack_range): New function.
(output_probe_stack_range): Likewise.
(ia64_expand_prologue): Invoke ia64_emit_probe_stack_range if static
builtin stack checking is enabled.
(rtx_needs_barrier) UNSPEC_VOLATILE: Handle UNSPECV_PROBE_STACK_RANGE
and UNSPECV_PROBE_STACK_ADDRESS.
(unknown_for_bundling_p): New predicate.
(group_barrier_needed): Use important_for_bundling_p.
(ia64_dfa_new_cycle): Use unknown_for_bundling_p.
(issue_nops_and_insn): Likewise.
(bundling): Likewise.
(final_emit_insn_group_barriers): Likewise.
* config/ia64/ia64-protos.h (output_probe_stack_range): Declare.
* config/ia64/hpux.h (STACK_CHECK_STATIC_BUILTIN): Define.
(STACK_CHECK_PROTECT): Likewise.
* config/ia64/linux.h (STACK_CHECK_STATIC_BUILTIN): Likewise.

which went in a few days after my patch.

Richard


Re: Ping: always supply a mode to plus_constant

2012-05-14 Thread Tristan Gingold

On May 14, 2012, at 3:23 PM, Richard Sandiford wrote:

 Richard Guenther richard.guent...@gmail.com writes:
 On Sun, May 6, 2012 at 12:23 AM, H.J. Lu hjl.to...@gmail.com wrote:
 On Thu, May 3, 2012 at 11:15 AM, Richard Sandiford
 rdsandif...@googlemail.com wrote:
 Ping for this patch to always supply a mode to plus_constant:
 
http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00892.html
 
 I've done a diff of the changes since the original test revision
 (which was r186448 FWIW) and there's only been one plus_constant-
 related change since then: Alan's rs6000 prologue/epilogue fixes.
 I'd repeat the original testing before committing.
 
 
 This caused:
 
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53249
 
 It also casuses IA64 build to fail for me:
 
 /gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c: In function
 'ia64_emit_probe_stack_range':
 /gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c:3279: error:
 incompatible type for argument 1 of 'plus_constant'
 /gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c:3279: warning:
 passing argument 2 of 'plus_constant' makes pointer from integer
 without a cast
 /gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c:3279: error:
 too few arguments to function 'plus_constant'
 /gcc/spec/sb-terbium-head-64/gcc/gcc/config/ia64/ia64.c:3330: error:
 incompatible type for argument 1 of 'plus_constant'
 ...
 
 I think this was:
 
 2012-05-10  Eric Botcazou  ebotca...@adacore.com
   Tristan Gingold  ging...@adacore.com
 
   * doc/md.texi (Standard Names): Document probe_stack_address.
   * explow.c (emit_stack_probe): Handle probe_stack_address.
   * config/ia64/ia64.md (UNSPECV_PROBE_STACK_ADDRESS): New constant.
   (UNSPECV_PROBE_STACK_RANGE): Likewise.
   (probe_stack_address): New insn.
   (probe_stack_range): Likewise.
   * config/ia64/ia64.c: Include common/common-target.h.
   (ia64_compute_frame_size): Mark r2 and r3 as used if static stack
   checking is enabled.
   (ia64_emit_probe_stack_range): New function.
   (output_probe_stack_range): Likewise.
   (ia64_expand_prologue): Invoke ia64_emit_probe_stack_range if static
   builtin stack checking is enabled.
   (rtx_needs_barrier) UNSPEC_VOLATILE: Handle UNSPECV_PROBE_STACK_RANGE
   and UNSPECV_PROBE_STACK_ADDRESS.
   (unknown_for_bundling_p): New predicate.
   (group_barrier_needed): Use important_for_bundling_p.
   (ia64_dfa_new_cycle): Use unknown_for_bundling_p.
   (issue_nops_and_insn): Likewise.
   (bundling): Likewise.
   (final_emit_insn_group_barriers): Likewise.
   * config/ia64/ia64-protos.h (output_probe_stack_range): Declare.
   * config/ia64/hpux.h (STACK_CHECK_STATIC_BUILTIN): Define.
   (STACK_CHECK_PROTECT): Likewise.
   * config/ia64/linux.h (STACK_CHECK_STATIC_BUILTIN): Likewise.
 
 which went in a few days after my patch.

The following patch fixes the build (not reg-tested, but looks obvious):

2012-05-14  Tristan Gingold  ging...@adacore.com

* config/ia64/ia64.c (ia64_expand_prologue): Adjust calls to 
plus_constant.

diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index e10db35..4c6050f 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -3277,7 +3277,7 @@ ia64_emit_probe_stack_range (HOST_WIDE_INT first, 
HOST_WIDE_INT size, int sol)
 size is at least 4096 - (96 + 2) * 8 = 3312 bytes, which is enough.
 Also compute the address of the last probe for the memory stack
 (which grows towards lower addresses).  */
-  emit_insn (gen_rtx_SET (VOIDmode, r3, plus_constant (r3, 4095)));
+  emit_insn (gen_rtx_SET (VOIDmode, r3, plus_constant (Pmode, r3, 4095)));
   emit_insn (gen_rtx_SET (VOIDmode, r2,
  gen_rtx_PLUS (Pmode, stack_pointer_rtx, r2)));
 
@@ -3329,12 +3329,12 @@ ia64_emit_probe_stack_range (HOST_WIDE_INT first, 
HOST_WIDE_INT size, int sol)
   for (i = 2 * PROBE_INTERVAL; i  size; i += PROBE_INTERVAL)
{
  emit_insn (gen_rtx_SET (VOIDmode, r2,
- plus_constant (r2, -PROBE_INTERVAL)));
+ plus_constant (Pmode, r2, -PROBE_INTERVAL)));
  emit_stack_probe (r2);
}
 
   emit_insn (gen_rtx_SET (VOIDmode, r2,
- plus_constant (r2,
+ plus_constant (Pmode, r2,
 (i - PROBE_INTERVAL) - size)));
   emit_stack_probe (r2);
 }
@@ -3395,7 +3395,8 @@ ia64_emit_probe_stack_range (HOST_WIDE_INT first, 
HOST_WIDE_INT size, int sol)
   if (size != rounded_size)
{
  emit_insn (gen_rtx_SET (VOIDmode, r2,
- plus_constant (r2, rounded_size - size)));
+ plus_constant (Pmode,
+r2, rounded_size - size)));
  emit_stack_probe (r2);
}
 }


Re: Ping: always supply a mode to plus_constant

2012-05-14 Thread Eric Botcazou
 The following patch fixes the build (not reg-tested, but looks obvious):

 2012-05-14  Tristan Gingold  ging...@adacore.com

   * config/ia64/ia64.c (ia64_expand_prologue): Adjust calls to 
 plus_constant.

Yes, that's the correct fix.  Sorry for the stupid breakage.

-- 
Eric Botcazou


Re: Ping: always supply a mode to plus_constant

2012-05-05 Thread H.J. Lu
On Thu, May 3, 2012 at 11:15 AM, Richard Sandiford
rdsandif...@googlemail.com wrote:
 Ping for this patch to always supply a mode to plus_constant:

    http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00892.html

 I've done a diff of the changes since the original test revision
 (which was r186448 FWIW) and there's only been one plus_constant-
 related change since then: Alan's rs6000 prologue/epilogue fixes.
 I'd repeat the original testing before committing.


This caused:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53249


-- 
H.J.


Ping: always supply a mode to plus_constant

2012-05-03 Thread Richard Sandiford
Ping for this patch to always supply a mode to plus_constant:

http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00892.html

I've done a diff of the changes since the original test revision
(which was r186448 FWIW) and there's only been one plus_constant-
related change since then: Alan's rs6000 prologue/epilogue fixes.
I'd repeat the original testing before committing.

Richard


Re: Ping: always supply a mode to plus_constant

2012-05-03 Thread Richard Henderson

On 05/03/2012 11:15 AM, Richard Sandiford wrote:

Ping for this patch to always supply a mode to plus_constant:

 http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00892.html


Ok.


r~