g_size - 1) / reg_size;
}
+ if (nregs > n_gpr)
+ nregs = n_gpr;
mem = gen_rtx_MEM (BLKmode,
plus_constant (Pmode, save_area,
--
Alan Modra
Australia Development Lab, IBM
|| modifier == EXPAND_STACK_PARM)
-? modifier : EXPAND_NORMAL);
+ modifier == EXPAND_SUM ? EXPAND_NORMAL : modifier);
if (MEM_P (orig_op0))
{
--
Alan Modra
Australia Development Lab, IBM
ite/gcc.target/powerpc/fabsl.c(revision 0)
+++ gcc/testsuite/gcc.target/powerpc/fabsl.c(revision 0)
@@ -0,0 +1,10 @@
+/* { dg-do compile { target { powerpc*-*-darwin* powerpc*-*-aix* rs6000-*-*
powerpc*-*-linux* } } } */
+/* { dg-options "-O2 -mlong-double-128" } */
+/* { dg-f
_E500_DOUBLE && TARGET_LONG_DOUBLE_128"
"
{
- const int hi_word = FLOAT_WORDS_BIG_ENDIAN ? 0 : GET_MODE_SIZE (DFmode);
- const int lo_word = FLOAT_WORDS_BIG_ENDIAN ? GET_MODE_SIZE (DFmode) : 0;
+ const int hi_word = LONG_DOUBLE_LARGE_FIRST ? 0 : GET_MODE_SIZE (DFmode);
+ const int lo_word = LONG_DOUBLE_LARGE_FIRST ? GET_MODE_SIZE (DFmode) : 0;
operands[3] = gen_reg_rtx (DFmode);
operands[4] = gen_reg_rtx (CCFPmode);
operands[5] = simplify_gen_subreg (DFmode, operands[0], TFmode, hi_word);
--
Alan Modra
Australia Development Lab, IBM
= 0;
for (; i != limit; i += dir)
{
- sprintf (buffer, "%08lx", (unsigned long) target_real[i]);
+ sprintf (buffer, "%08lx", (unsigned long) target_real[i ^ twid]);
write_chars (buffer, 8);
}
}
--
Alan Modra
Australia Development Lab, IBM
On Wed, Jun 12, 2013 at 11:09:03AM -0400, David Edelsohn wrote:
> On Wed, Jun 12, 2013 at 10:53 AM, Alan Modra wrote:
>
> > * config/rs6000/rs6000.h (LONG_DOUBLE_LARGE_FIRST): Define.
> > * config/rs6000/rs6000.md (signbittf2): New insn.
> > (ex
way around?
Big-endian targets store the high part of multi-byte values at the low
address. Why should vectors be different?
--
Alan Modra
Australia Development Lab, IBM
(revision 200055)
+++ libstdc++-v3/configure.host (working copy)
@@ -330,7 +330,7 @@ case "${host}" in
mips64*)
abi_baseline_pair=mips64-linux-gnu
;;
- powerpc64)
+ powerpc64*)
abi_baseline_pair=powerpc64-linux-gnu
;;
s390)
--
\
+ && (ALIGN) < 64) \
+ ? 64
\
+ : (ALIGN))
/* Nonzero if move instructions will actually fail to work
when given unaligned data. */
--
Alan Modra
Australia Development Lab, IBM
On Thu, Jun 13, 2013 at 04:29:44PM +0200, Andreas Krebbel wrote:
> On 07/06/13 04:00, Alan Modra wrote:
> > force_const_mem() isn't supposed to handle VOIDmode or BLKmode, so the
> > check for VOIDmode when aligning is needless. If we ever did get one
> > of these mode
On Thu, Jun 13, 2013 at 05:10:51PM +0930, Alan Modra wrote:
> On Wed, Jun 12, 2013 at 12:52:03PM -0500, Edmar Wienskoski wrote:
> > The e500v2 (SPE) hardware is such that if the address of vector (double
> > world
> > load / stores) are not double world aligned the
On Thu, Jun 13, 2013 at 05:42:17PM +0200, Jakub Jelinek wrote:
> On Fri, Jun 14, 2013 at 01:07:01AM +0930, Alan Modra wrote:
> > @@ -5774,10 +5818,11 @@ offsettable_ok_by_alignment (rtx op, HOST_WIDE_INT
> >type = TREE_TYPE (decl);
> >
> >
On Thu, Jun 13, 2013 at 10:45:38AM +0200, Richard Biener wrote:
> On Wed, Jun 12, 2013 at 4:48 AM, Alan Modra wrote:
> > The following patch fixes PR57134 by
> > a) excluding bitfield expansion when EXPAND_MEMORY, and
> > b) passing down the EXPAND_MEMORY modifier in a c
On Fri, Jun 14, 2013 at 10:59:52AM +0200, Jakub Jelinek wrote:
> On Fri, Jun 14, 2013 at 08:18:19AM +0930, Alan Modra wrote:
> > It is handling !DECL_P trees, which must be local. I know I saw
> > STRING_CST here when I wrote offsettable_ok_by_alignment, hence the
> > use
On Fri, Jun 14, 2013 at 12:54:40PM +0200, Jakub Jelinek wrote:
> On Fri, Jun 14, 2013 at 08:12:02PM +0930, Alan Modra wrote:
> > I see your point, but for there to be a real problem we'd need
> > a) A library exporting such a type with (supposed) increased
> >alignm
On Fri, Sep 05, 2014 at 11:00:04AM +0930, Alan Modra wrote:
> Of course it would be better to repair the damage done to debug info
> rather than rejecting it outright..
This cures PR60655 on PowerPC by passing the horrible debug_loc
expressions we have through simplify_rtx. Not only do
I also
> >
> > It is built using cselib_expand_value_rtx_cb, which calls the various
> > simplify_*_operation and simplify_rtx too.
>
> So why do we need to simplify again then?
It looks to me that cselib_expand_value_rtx_1 doesn't call
simplify_rtx for DEBUG_EXPR.
--
Alan Modra
Australia Development Lab, IBM
regression test with RUNTESTFLAGS=--target_board=unix/'{-m32,-m64}',
so my "bootstrapped and regression tested powerpc64-linux" claim
includes a -m32 regression test too. Not quite as comprehensive a
test as you've done (thanks!), but I did see the FAIL->PASS for -m32.
--
Alan Modra
Australia Development Lab, IBM
ntroduced this problem
when adding ELFv2 support by moving those notes.
--
Alan Modra
Australia Development Lab, IBM
(olddecl);
+ newsym = symtab_node::get (newdecl);
+ oldsym->set_comdat_group (newsym->get_comdat_group ());
+ }
+ }
+
+ if (TREE_CODE (newdecl) == VAR_DECL
+ && DECL_THREAD_LOCAL_P (newdecl))
+ set_decl_tls_model (olddecl, DECL_TLS_MODEL (newdecl));
+}
+
DECL_UID (olddecl) = olddecl_uid;
if (olddecl_friend)
DECL_FRIEND_P (olddecl) = 1;
--
Alan Modra
Australia Development Lab, IBM
On Mon, Sep 15, 2014 at 08:36:58PM +, Joseph S. Myers wrote:
> On Mon, 15 Sep 2014, Alan Modra wrote:
>
> > This patch cures the linux kernel boot failure when compiled using
> > trunk gcc. (Andrew, apologies for hijacking your bugzilla, I started
> > work on this bef
ot;trunk, with a straight-forward fix for
complete loss of section attribute, does not honour the last section
attribute".
--
Alan Modra
Australia Development Lab, IBM
re". In particular, any dynamic objects with TLS
segments loaded at program startup should not be counted. This is
because DTV_SURPLUS *extra* slots are allocated above those needed at
program startup. At least, that's how I think it works.
--
Alan Modra
Australia Development Lab, IBM
org/ml/gcc-patches/2013-06/msg00766.html
--
Alan Modra
Australia Development Lab, IBM
pltisw (w, 30);
- check_v4si (v, w);
+ V4SI (30, 30, 30, 30);
}
void v4si_vspltisw_neg_addself ()
{
- v4si v = { -24, -24, -24, -24 };
- vspltisw (w, -24);
- check_v4si (v, w);
+ V4SI (-24, -24, -24, -24);
}
@@ -316,3 +249,5 @@ int main ()
v4si_vspltisw_neg_addself ();
return 0;
}
+
+/* { dg-final { scan-assembler-not "lvx" { target { ! powerpc*le-*-* } } } } */
--
Alan Modra
Australia Development Lab, IBM
On Fri, Jun 07, 2013 at 12:12:17AM -0400, David Edelsohn wrote:
> On Thu, Jun 6, 2013 at 9:34 PM, Alan Modra wrote:
> > Bootstrapped and regression tested powerpc64-linux. OK to apply?
> >
> > * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Support
>
On Mon, Jun 24, 2013 at 11:12:03AM -0400, Anthony Green wrote:
> It's fine with me. Please commit it directly to GCC and I'll put it in the
> upstream.
Thanks! Committed revision 200383. (and 200384 to 4.8 branch.)
--
Alan Modra
Australia Development Lab, IBM
ot;
;;
s390x-*linux*)
@@ -545,7 +548,10 @@
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
-ppc*-*linux*|powerpc*-*linux*)
+powerpcle-*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+powerpc-*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*)
--
Alan Modra
Australia Development Lab, IBM
IRST_SAVED_GP_REGNO);
frame_reg_rtx = gen_rtx_REG (Pmode, 11);
emit_insn (gen_addsi3 (frame_reg_rtx, old_frame_reg_rtx,
GEN_INT (info->spe_gp_save_offset
--
Alan Modra
Australia Development Lab, IBM
On Tue, Jun 11, 2013 at 09:56:11AM +0930, Alan Modra wrote:
>[snip]
> It isn't hard to see why we are going wrong. IBM long double is
> really a two element array of double, and the rs6000 backend uses
> subregs to access the elements. The problem is that lower-subreg
> low
On Mon, Aug 19, 2013 at 09:53:14AM -0600, Tom Tromey wrote:
> >>>>> "Alan" == Alan Modra writes:
>
> Alan> This teaches gdb about little-endian IBM long double. Like big-endian
> Alan> IBM long double, the little-endian version is an array of two doub
func, please test out your great ideas on
i386, ppc32, mips, arm, etc. *NOT* x86_64 or powerpc64 which both
avoid the GOT in many cases.
--
Alan Modra
Australia Development Lab, IBM
cidentally writing code that only works on x86_64 or
powerpc64 is very easy, and might lead people to think you own shares
in Intel or IBM.
--
Alan Modra
Australia Development Lab, IBM
ance, you might wonder why it is correct to have
if (decl && !DECL_P (decl))
decl = NULL_TREE;
before calling get_section(). The answer is that get_section() is not
prepared to handle !DECL_P trees when reporting errors. Arguably it
should be modified to do that.
--
Alan Modra
Au
DFmode is in a floating point reg. It usually is,
but may be in two general purpose regs. Which then need an offset to
load/store the second reg.
--
Alan Modra
Australia Development Lab, IBM
@@ -6773,7 +7238,7 @@
(const_int 0)))
(set (match_operand:DI 0 "gpc_reg_operand" "")
(zero_extend:DI (subreg:HI (rotate:DI (match_dup 1) (match_dup 2)) 0)))]
- "TARGET_POWERPC64 && reload_completed&q
(working copy)
@@ -187,12 +187,6 @@
rs6000_abi_name); \
} \
\
- if (rs6000_current_abi == ABI_AIX && TARGET_LITTLE_ENDIAN) \
-{ \
- rs6000_isa_flags &= ~OPTION_MASK_LITTLE_ENDIAN; \
- error ("-mcall-aixdesc must be big endian"); \
-} \
- \
if (TARGET_SECURE_PLT != secure_plt) \
{ \
error ("-msecure-plt not supported by your assembler"); \
--
Alan Modra
Australia Development Lab, IBM
),
- gen_rtx_IOR (DImode, copy_rtx (dest), GEN_INT
(ud1)));
+ gen_rtx_IOR (DImode, copy_rtx (dest),
+GEN_INT (ud1)));
}
}
return dest;
--
Alan Modra
Australia Development Lab, IBM
-rs6000.c (working copy)
@@ -190,7 +190,7 @@
return NULL;
}
-/* Returns AT_PLATFORM if present, otherwise generic 32. */
+/* Returns AT_DCACHEBSIZE if present, otherwise generic 32. */
static int
elf_dcachebsize (void)
--
Alan Modra
Australia Development Lab, IBM
the address if it changed. */
if (addr != XEXP (mem, 0))
{
- mem = change_address (mem, mode, addr);
+ mem = replace_equiv_address_nv (mem, addr);
if (TARGET_DEBUG_ADDR)
fprintf (stderr, "\nrs6000_secondary_reload_inner, mem adjusted.\n");
}
--
he start of the
block. Aligning shouldn't be necessary, because we've already done
that.. OTOH, it shouldn't hurt to align again.
--
Alan Modra
Australia Development Lab, IBM
}
else if (bytes >= 8 && TARGET_POWERPC64
- /* 64-bit loads and stores require word-aligned
- displacements. */
- && (align >= 64 || (!STRICT_ALIGNMENT && align >= 32)))
+ && (align >= 64 || !STRICT_ALIGNMENT))
{
move_bytes = 8;
mode = DImode;
--
Alan Modra
Australia Development Lab, IBM
On Fri, May 02, 2014 at 11:28:27AM -0400, David Edelsohn wrote:
> On Fri, May 2, 2014 at 6:20 AM, Alan Modra wrote:
> > In cases where the compiler has no alignment info, powerpc64le-linux
> > gcc generates byte at a time copies for -mstrict-align (which is on
> > for
On Tue, May 06, 2014 at 06:00:14PM +0930, Alan Modra wrote:
> __asm__ __volatile__ ("ld %0,0(%1)"
> : "=r" (scratch[0]) : "r" (p));
Ick, I can't write ppc asm. That should be "b" (p).
--
Alan Modra
Australia Development Lab, IBM
m = rs6000_emit_set_const (operands[0], DImode, operands[1], 5);
-
- if (tem == operands[0])
-DONE;
- else
-FAIL;
+{ rs6000_emit_set_const (operands[0], operands[1]);
+ DONE;
}")
(define_split
@@ -10341,12 +10333,8 @@
[(set (match_dup 0) (match_dup 2))
(set (match_dup 0) (plus:DI (mat
On Wed, May 07, 2014 at 01:39:50PM -0400, David Edelsohn wrote:
> On Tue, May 6, 2014 at 4:32 AM, Alan Modra wrote:
> > BTW, the latest patch in my tree has a slight refinement, the
> > reload-by-hand addition.
> >
> > PR target/60737
> >
the last instruction emitted, with every other
use getting hit with copy_rtx. The previous approach was similar,
but used the bare "dest" on the first instruction emitted. Obviously
you don't need copy_rtx anywhere with the new code when
can_create_pseudo_p is true, but I felt
On Sat, May 10, 2014 at 10:24:34PM -0400, David Edelsohn wrote:
> On Thu, May 8, 2014 at 10:40 PM, Alan Modra wrote:
> > rs6000_emit_set_const ... always returns a non-zero result ...
>
> Can you help clarify the removal of the code that tests if the
> splitter failed?
Se
On Mon, May 12, 2014 at 08:23:16AM +0930, Alan Modra wrote:
> On Sat, May 10, 2014 at 10:24:34PM -0400, David Edelsohn wrote:
> > On Thu, May 8, 2014 at 10:40 PM, Alan Modra wrote:
> > > rs6000_emit_set_const ... always returns a non-zero result ...
> >
> > Can y
On Sat, May 10, 2014 at 10:24:34PM -0400, David Edelsohn wrote:
> On Thu, May 8, 2014 at 10:40 PM, Alan Modra wrote:
>
> >> Please do not remove all of the comments from the two functions. The
> >> comments should provide some documentation about the different
> >&
de.
rs6000_emit_set_const has never returned anything but DEST, right from
the initial commit. It can't be called with DEST == NULL, so
"dest = gen_reg_rtx (mode)" is also dead code.
However, I retracted that patch because I now think
rs6000_emit_set_const should in fact sometimes result in the splitter
failing, exactly as is done in the alpha port.
--
Alan Modra
Australia Development Lab, IBM
RPC64 && TARGET_LFIWAX"
"@
lwa%U1%X1 %0,%1
@@ -758,7 +758,7 @@
(define_insn "*extendsidi2_nocell"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
- (sign_extend:DI (match_operand:SI 1 "lwa_operand" "m,r")))]
+
h (working copy)
@@ -114,7 +114,7 @@ extern void rs6000_emit_cbranch (enum machine_mode
extern char * output_cbranch (rtx, const char *, int, rtx);
extern char * output_e500_flip_gt_bit (rtx, rtx);
extern const char * output_probe_stack_range (rtx, rtx);
-extern rtx rs6000_emit_set_const (rtx, enum machine_mode, rtx, int);
+extern bool rs6000_emit_set_const (rtx, rtx);
extern int rs6000_emit_cmove (rtx, rtx, rtx, rtx);
extern int rs6000_emit_vector_cond_expr (rtx, rtx, rtx, rtx, rtx, rtx);
extern void rs6000_emit_minmax (rtx, enum rtx_code, rtx, rtx);
--
Alan Modra
Australia Development Lab, IBM
L) \
+ rs6000_reg_parm_stack_space ((FNDECL), true)
+
/* Define this if the above stack space is to be considered part of the
space allocated by the caller. */
#define OUTGOING_REG_PARM_STACK_SPACE(FNTYPE) 1
--
Alan Modra
Australia Development Lab, IBM
1,7 @@
%{mpowerpc64: -mppc64} \
%{maltivec: -m970} \
%{!maltivec: %{!mpowerpc64: %(asm_default) \
-%{mcpu=native: %(asm_cpu_native)} \
-%{mcpu=power3: -m620} \
-%{mcpu=power4: -mpwr4} \
-%{mcpu=power5: -mpwr5} \
-%{mcpu=power5+: -mpwr5x} \
-%{mcpu=power6: -mpwr6} \
-%{mcpu=power6x: -mpwr
GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
${realsrcdir}/configure \
--enable-languages=${enable_languages-all} \
--target=$target_alias --host=$build_alias --build=$build_alias
--
Alan Modra
Australia Development Lab, IBM
7;m not
sure now, I'll have to do some digging. Also as to why @INCINTL@ was
removed, when gettext is potentially needed for the gen programs.
--
Alan Modra
Australia Development Lab, IBM
it in is probably safer. Who knows what
weird use is being made of CPPFLAGS_FOR_TARGET?
@INCINTL@ is set to -I${top_builddir}/../intl when someone configures
using --with-included-gettext. It seems reasonable to me that
-with-included-gettext affect both build and host.
Thanks everyone for yo
(mode(SD))) r31 __asm__ ("r31");
+ register float __attribute__ ((mode(SD))) fr1 __asm__ ("fr1");
+
+ __asm__ ("#" : "=d" (fr1));
+ r31 = fr1;
+ __asm__ ("#" : : "r" (r31));
+}
--
Alan Modra
Australia Development Lab, IBM
addr_op1 = XEXP (addr, 0);
+ addr_op1 = find_replacement (&XEXP (addr, 0));
addr_op2 = XEXP (addr, 1);
if (!REG_P (addr_op1))
rs6000_secondary_reload_fail (__LINE__, reg, mem, scratch, store_p);
--
Alan Modra
Australia Development Lab, IBM
On Mon, Feb 10, 2014 at 07:01:03PM -0500, David Edelsohn wrote:
> On Mon, Feb 10, 2014 at 5:18 PM, Alan Modra wrote:
>
> Shouldn't addr_op2 also be set from find_replacement?
Sorry, I thought after I sent the email that I should have added some
explanation of why cert
g, mem, scratch, store_p);
-
- addr = XEXP (addr, 1);
}
if (legitimate_indirect_address_p (addr, false) /* reg */
--
Alan Modra
Australia Development Lab, IBM
location in the old user app..
I worked around this problem on powerpc by defining new enum ffi_abi
values so that you can recognize an old app.
--
Alan Modra
Australia Development Lab, IBM
(gen_rtx_SET (VOIDmode, mem, reg));
+ else
+ emit_insn (gen_rtx_SET (VOIDmode, reg, mem));
+ return;
+}
rclass = REGNO_REG_CLASS (regno);
addr = find_replacement (&XEXP (mem, 0));
--
Alan Modra
Australia Development Lab, IBM
On Tue, Feb 25, 2014 at 02:30:59PM +0100, Ulrich Weigand wrote:
> Alan Modra wrote:
>
> > Normally, reload 2, the secondary reload for reload 3, would result in
> > a call to reload_v16qi_si_load with (reg:V16QI 78 1) as its "reg"
> > argument, and the mem home f
On Wed, Feb 26, 2014 at 01:03:52AM +1030, Alan Modra wrote:
> On Tue, Feb 25, 2014 at 02:30:59PM +0100, Ulrich Weigand wrote:
> > Instead, there's code in emit_input_reload_insns that is supposed
> > to re-check whether a secondary reload is still needed if something
> >
5 @@
/* Public attributes of the .gdb_index section.
- Copyright 2012-2014 Free Software Foundation, Inc.
+ Copyright (C) 2012-2014 Free Software Foundation, Inc.
This file is part of GDB.
--
Alan Modra
Australia Development Lab, IBM
es/
Joseph, do you know why implicitly adding years to the claimed
copyright years is a problem? I'm guessing the file needs to be
published somewhere for each year claimed.
--
Alan Modra
Australia Development Lab, IBM
On Mon, Mar 03, 2014 at 02:14:51PM +1030, Alan Modra wrote:
> I'll post update-copyright.py separately.
--- /src/gcc-current/contrib/update-copyright.py2013-02-07
12:55:28.272161270 +1030
+++ ./update-copyright.py 2014-03-03 13:44:35.650293322 +1030
@@ -74
})
+#define rs6000_special_adjust_field_align_p false
/* Skip a variable name, enclosed in quotes ("). */
static inline
--
Alan Modra
Australia Development Lab, IBM
On Sun, Jul 27, 2014 at 07:16:07PM +0930, Alan Modra wrote:
> On Sat, Jul 26, 2014 at 01:45:12PM +0200, Matthias Klose wrote:
> > Am 17.07.2014 02:41, schrieb Ulrich Weigand:
> > > Hello,
> > >
> > > this is the variant intended for the 4.8/4.9 branches of the
at's what I found this morning too, when checking the bootstrap
I'd fired off after posting the "correction".
--
Alan Modra
Australia Development Lab, IBM
- libcpp/identifiers.c(revision 212477)
+++ libcpp/identifiers.c(working copy)
@@ -54,9 +54,7 @@ _cpp_init_hashtable (cpp_reader *pfile, cpp_hash_t
table = ht_create (13); /* 8K (=2^13) entries. */
table->alloc_node = alloc_node;
- _obstack_begin (&pfile->hash_ob, 0, 0,
- (void *(*) (long)) xmalloc,
- (void (*) (void *)) free);
+ obstack_specify_allocation (&pfile->hash_ob, 0, 0, xmalloc, free);
}
table->pfile = pfile;
--
Alan Modra
Australia Development Lab, IBM
On Mon, Mar 03, 2014 at 01:33:18PM +, Richard Sandiford wrote:
> Alan Modra writes:
> > On Mon, Mar 03, 2014 at 02:14:51PM +1030, Alan Modra wrote:
> >> I'll post update-copyright.py separately.
>
> Thanks for doing this, looks good to me FWIW. I don'
we didn't go as far as we could.
For example, we still pass fp to varargs functions in both fp regs and
on the stack, when only the stack will be used by a callee correctly
implementing either ELFv2 or ELFv1 ABIs. Another thing that we didn't
change is that sibcalls can be allowed in more cases than the current
code allows.
--
Alan Modra
Australia Development Lab, IBM
On Wed, Mar 26, 2014 at 09:43:08PM +, Maciej W. Rozycki wrote:
> Alan,
>
> On Tue, 17 Dec 2013, Alan Modra wrote:
>
> > On Tue, Dec 17, 2013 at 01:14:23PM +0100, Bernd Edlinger wrote:
> > > the reason for this is overwriting GMPINC for the auto-build generation
gomp_sem_post (&parent->taskwait_sem);
}
@@ -291,7 +296,8 @@ GOMP_taskwait (void)
struct gomp_task *child_task = NULL;
struct gomp_task *to_free = NULL;
- if (task == NULL || team == NULL)
+ if (task == NULL
+ || __atomic_load_n (&task->chi
On Tue, Jan 22, 2013 at 12:19:21PM +0100, Jakub Jelinek wrote:
> Looks good to me.
Thanks for the amazingly quick review! Committed revision 195370.
Is the patch OK for 4.7 too?
--
Alan Modra
Australia Development Lab, IBM
at
+ this point, but we must ensure that all writes to memory by a
+ child thread task work function are seen before we exit from
+ GOMP_taskwait. */
if (task == NULL
|| __atomic_load_n (&task->children, MEMMODEL_ACQUIRE) == NULL)
return;
--
Alan Modra
Australia Development Lab, IBM
else
+ sri->icode = CODE_FOR_reload_si_store;
+ sri->extra_cost = 2;
+ ret = NO_REGS;
+ }
else
- sri->icode = CODE_FOR_reload_si_store;
- sri->extra_cost = 2;
- ret = NO_REGS;
+ default_p = true;
}
else
default_p = true;
--
Alan Modra
Australia Development Lab, IBM
t;fr28", "fr29", "fr30", "fr31");
+#endif
+ x.d = tmp;
+}
Index: gcc/testsuite/gfortran.dg/pr54131.f
===
--- gcc/testsuite/gfortran.dg/pr54131.f (revision 0)
+++ gcc/testsuite/gfortran.dg/pr54131.f
expensive,
involving a copy to memory. So, how about teaching reload about this
as follows? I picked 6 for the reject value to make it equivalent to
a '?' in the constraint, but that may be too large. Any value of 2 or
greater works for the testcase.
Bootstrapped and regression te
h -Os as that can result in references to
+# out-of-line register save/restore functions, which may be unresolved
+# as crtend.o is linked after libgcc.a.
+CRTSTUFF_T_CFLAGS = -msdata=none -O2
--
Alan Modra
Australia Development Lab, IBM
On Thu, Feb 07, 2013 at 10:11:02AM +0100, Richard Biener wrote:
> On Thu, Feb 7, 2013 at 9:45 AM, Alan Modra wrote:
> > I think this one counts as obvious, but I'll ask for permission anyway.
> > Bootstrapped etc. powerpc-linux. OK everywhere?
>
> Isn't there a
we could do that quite
easily by defining CRT_CALL_STATIC_FUNCTION. Done! Another 4.9 patch
queued.
--
Alan Modra
Australia Development Lab, IBM
better job of "w", about the same as trunk with my reload patch.
--
Alan Modra
Australia Development Lab, IBM
;vregs->vsave - new_cfa;
+
/* If we have SPE register high-parts... we check at compile-time to
avoid expanding the code for all other PowerPC. */
#ifdef __SPE__
- for (i = 0; i < 32; i++)
+ for (i = 14; i < 32; i++)
{
fs->regs.reg[i + FIRST_PSEUDO_REGISTER - 1].how = REG_SAVED_OFFSET;
fs->regs.reg[i + FIRST_PSEUDO_REGISTER - 1].loc.offset
--
Alan Modra
Australia Development Lab, IBM
+ force_nonfallthru_and_redirect. */
+ if (CALL_P (PREV_INSN (insert_point))
+ && SIBLING_CALL_P (PREV_INSN (insert_point)))
+ {
+ delete_insn (insert_point);
+ e = single_succ_edge (copy_bb);
+ e->flags = EDGE_SIBCALL | EDGE_ABNORMAL;
+ }
+ if (bitmap_empty_p (&bb_tail))
+ break;
+ }
}
fail_shrinkwrap:
+ bitmap_clear (&bb_tail);
bitmap_clear (&bb_antic_flags);
bitmap_clear (&bb_on_list);
VEC_free (basic_block, heap, vec);
--
Alan Modra
Australia Development Lab, IBM
On Wed, Oct 26, 2011 at 03:01:01PM +0200, Bernd Schmidt wrote:
> On 10/26/11 14:27, Alan Modra wrote:
> > Committed revision 180522. It turns out that shrink-wrapping isn't as
> > effective as it used to be with the 20110915 based sources I was using
> > originally. pov
On Wed, Oct 26, 2011 at 03:59:36PM +0200, Bernd Schmidt wrote:
> On 10/26/11 15:54, Alan Modra wrote:
> > I guess the tradeoff between the classic shrink-wrap epilogue scheme
> > and my duplicate tail idea is whether duplicating tail blocks adds
> > more code than duplicating
unsigned) value <= LAST_VIRTUAL_REGISTER)
{
if (value == VIRTUAL_INCOMING_ARGS_REGNUM)
fprintf (outfile, " %d virtual-incoming-args", value);
else if (value == VIRTUAL_STACK_VARS_REGNUM)
--
Alan Modra
Australia Development Lab, IBM
On Thu, Oct 27, 2011 at 12:24:46AM +1030, Alan Modra wrote:
> more code than duplicating epilogues. From what I've seen, the
> duplicate tails are generally very small. I guess I should dump out
> some info so we can get a better idea.
There were 545 occurrences of shrink-wrap i
}
redirect_edge_and_branch_force (e, *pdest_bb);
}
! VEC_free (edge, heap, unconverted_simple_returns);
! }
!
! if (entry_edge != orig_entry_edge)
! {
! FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds)
! if (EDGE_COUNT (e->src->preds) != 0
! && (e->flags & EDGE_FAKE) != 0
! && !bitmap_bit_p (&bb_flags, e->src->index))
! {
! emit_return_into_block (true, e->src);
! e->flags &= ~(EDGE_FALLTHRU | EDGE_FAKE);
! }
}
#endif
*** epilogue_done:
*** 6233,6240
if (!CALL_P (insn)
|| ! SIBLING_CALL_P (insn)
|| (entry_edge != orig_entry_edge
! && !bitmap_bit_p (&bb_flags, bb->index)))
{
ei_next (&ei);
continue;
--- 6440,6450
if (!CALL_P (insn)
|| ! SIBLING_CALL_P (insn)
+ #ifdef HAVE_simple_return
|| (entry_edge != orig_entry_edge
! && !bitmap_bit_p (&bb_flags, bb->index))
! #endif
! )
{
ei_next (&ei);
continue;
*** epilogue_done:
*** 6281,6287
--- 6491,6499
}
#endif
+ #ifdef HAVE_simple_return
bitmap_clear (&bb_flags);
+ #endif
/* Threading the prologue and epilogue changes the artificial refs
in the entry and exit blocks. */
--
Alan Modra
Australia Development Lab, IBM
On Tue, Nov 01, 2011 at 12:57:22AM +1030, Alan Modra wrote:
> Bits left to do
> - limit size of duplicated tails
Done here. Also fixes a hole in that I took no notice of
targetm.cannot_copy_insn_p when duplicating tails.
One interesting result is that the tail duplication actually reduc
d);
+static void rs6000_code_end (void) ATTRIBUTE_UNUSED;
/* Hash table stuff for keeping track of TOC entries. */
--
Alan Modra
Australia Development Lab, IBM
frame_reg_rtx,
+ rtx src_reg = gen_rtx_REG (Pmode, DEFAULT_ABI == ABI_AIX ? 12 : 11);
+
+ emit_insn (gen_add3_insn (src_reg, frame_reg_rtx,
GEN_INT (sp_offset - info->fp_size)));
- if (REGNO (frame_reg_rtx) == 11)
- sp_offset += info->fp_size;
+ if (REGNO (frame_reg_rtx) == REGNO (src_reg))
+ sp_offset = info->fp_size;
}
rs6000_emit_savres_rtx (info, frame_reg_rtx,
--
Alan Modra
Australia Development Lab, IBM
Ping http://gcc.gnu.org/ml/gcc-patches/2011-10/msg02429.html
Eric fixed the bootstrap breakage by another patch, but there is a
fairly obvious bug in gen_reload fixed by my patch. I gave enough
contect in the diff that you don't even need to look at the file. :)
--
Alan Modra
Aust
_rtx
+ if (DEFAULT_ABI == ABI_V4
|| (TARGET_SPE_ABI
&& info->spe_64bit_regs_used != 0
&& info->first_gp_reg_save != 32))
--
Alan Modra
Australia Development Lab, IBM
nd on
> whether branch islands were inserted to reach the common code.
Yes, but that doesn't happen on powerpc-linux until code size goes
above 33M. We get a (small) gain otherwise when able to use the
exit versions of the out-of-line restores.
> Bootstrapped this,
Thanks!
--
Alan M
.gnu.org/ml/gcc/2011-03/msg00123.html
>
> The failure can still be exposed on mainline with a minor adjustment
> to the C testcase quoted in the msg.
Even after revision 181056?
--
Alan Modra
Australia Development Lab, IBM
601 - 700 of 1010 matches
Mail list logo