On Tue, May 19, 2015 at 02:18:23PM -0400, David Edelsohn wrote:
> This seems reasonable to me.
>
> Alan, any thoughts from you?
Looks good.
--
Alan Modra
Australia Development Lab, IBM
split-stack being honoured.
> - The comments say that the gold linker is used for some
> situations but I don't see any reference in the code to enabling
> the gold linker for ppc64le, ppc64, or x86. Is the user expected
> to add the option for the gold linker if needed?
At t
On Mon, May 18, 2015 at 02:05:59PM -0400, David Edelsohn wrote:
> On Sun, May 17, 2015 at 10:54 PM, Alan Modra wrote:
> > This patch changes rs6000_stack_info to keep save areas offsets even
> > when not used. I need lr_save_offset valid for split-stack, and it
> > seemed re
field in the TCB, available with glibc-2.18. */
writing
/* -fsplit-stack uses a field in the TCB, available with glibc-2.19.
We also allow 2.18 because alignment padding guarantees that the
space is available there too. */
because it's a lie to say the field was there in 2.18.
--
On Wed, May 20, 2015 at 09:02:40AM -0400, David Edelsohn wrote:
> On Tue, May 19, 2015 at 9:09 PM, Alan Modra wrote:
> > On Mon, May 18, 2015 at 02:05:59PM -0400, David Edelsohn wrote:
> >> On Sun, May 17, 2015 at 10:54 PM, Alan Modra wrote:
> >> > This patch cha
ne PARAMS 48
#endif
#define MORESTACK_FRAMESIZE (PARAMS+96)
--
Alan Modra
Australia Development Lab, IBM
= i;
}
- while (changed);
+ /* If nothing changed, fail. */
+ if (!not_canonical)
+return NULL_RTX;
+
/* Create (minus -C X) instead of (neg (const (plus X C))). */
if (n_ops == 2
&& CONST_INT_P (ops[1].op)
--
Alan Modra
Australia Development Lab, IBM
(use_insn)) >= 0)
continue;
@@ -1124,6 +1213,16 @@ create_log_links (void)
}
}
+ /* Repair BLOCK_FOR_INSN. */
+
+ bb = ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb;
+ twiddle_first_block (bb, bb);
+ if (!hard_reg_set_empty_p (return_regs))
+{
+ bb = EXIT_B
&& HARD_REGISTER_NUM_P (regno)
&& REG_NREGS (x) > 1)
{
unsigned int ourend = END_REGNO (x);
@@ -13588,7 +13588,7 @@ reg_bitfield_target_p (rtx x, rtx body)
return 0;
tregno = REGNO (target), regno = REGNO (x);
- if (tregno >= FIRST_PSEUDO_REGISTER || regno >= FIRST_PSEUDO_REGISTER)
+ if (!HARD_REGISTER_NUM_P (tregno) || !HARD_REGISTER_NUM_P (regno))
return target == x;
endtregno = end_hard_regno (GET_MODE (target), tregno);
@@ -13922,7 +13922,7 @@ distribute_notes (rtx notes, rtx_insn *from_insn,
TEM_INSN is doing. If so, delete TEM_INSN. Otherwise,
make this
into a REG_UNUSED note instead. Don't delete sets to
global register vars. */
- if ((REGNO (XEXP (note, 0)) >= FIRST_PSEUDO_REGISTER
+ if ((!HARD_REGISTER_P (XEXP (note, 0))
|| !global_regs[REGNO (XEXP (note, 0))])
&& reg_set_p (XEXP (note, 0), PATTERN (tem_insn)))
{
--
Alan Modra
Australia Development Lab, IBM
On Mon, May 25, 2015 at 10:26:35AM +0930, Alan Modra wrote:
> looking at gcc/*.o I haven't yet seen any regressions in code quality.)
Well that didn't last very long. There are regressions, and just from
looking at disassembled object files it would appear to be frame
pointer rel
SET_DEST (reg_reg)),
+ REGNO (SET_DEST (reg_reg)));
+ }
+ else if (can_combine_use_p (use))
+ next_use[DF_REF_REGNO (use)] = insn;
+ }
}
+ CLEAR_HARD_REG_SET (hard_regs);
}
free (next_use);
--
Alan Modra
Australia Development Lab, IBM
(set (match_dup 3)
(compare:CC (match_dup 0)
(const_int 0)))]
- ""
+ "
+{
+ operands[2] = GEN_INT (UINTVAL (operands[2]) << INTVAL (operands[4]));
+}"
[(set_attr "type" "logical")
(set_attr "dot" "yes")
- (set_attr "length" "4,8")])
+ (set_attr "length" "4,12")])
(define_insn "and3_mask"
--
Alan Modra
Australia Development Lab, IBM
On Tue, Aug 25, 2015 at 07:09:48PM -0500, Segher Boessenkool wrote:
> On Wed, Aug 26, 2015 at 08:40:49AM +0930, Alan Modra wrote:
> > On Tue, Aug 25, 2015 at 10:08:54AM -0700, Segher Boessenkool wrote:
> > > -(define_insn_and_split "*and3_imm_dot_shifted"
> &
uot; "0")
(match_operand:GPR 2 "const_int_operand" "n")))
(clobber (match_scratch:GPR 3 "=r"))]
"!logical_const_operand (operands[2], mode)
--
Alan Modra
Australia Development Lab, IBM
00.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -22659,6 +22659,7 @@ rs6000_function_ok_for_sibcall (tree decl, tree exp)
|| ((DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_ELFv2)
&& decl
&& !DECL_EXTERNAL (decl)
+ && !DECL_WEAK (decl)
/rs6000/sysv4le.h
+++ b/gcc/config/rs6000/sysv4le.h
@@ -25,10 +25,6 @@
#undef DEFAULT_ASM_ENDIAN
#defineDEFAULT_ASM_ENDIAN " -mlittle"
-#undef LINK_TARGET_SPEC
-#defineLINK_TARGET_SPEC \
- ENDIAN_SELECT(" --oformat elf32-powerpc", "", "")
-
#undef MULTILIB_DEFAULTS
#defineMULTILIB_DEFAULTS { "mlittle", "mcall-sysv" }
--
Alan Modra
Australia Development Lab, IBM
html
Given that things are going rather slow in libffi land at the moment,
perhaps I should merge this to gcc now?
--
Alan Modra
Australia Development Lab, IBM
under the PLUS. */
addr = XEXP (addr, 1);
}
gcc_assert (GET_CODE (addr) == PLUS || GET_CODE (addr) == LO_SUM);
--
Alan Modra
Australia Development Lab, IBM
On Tue, Sep 08, 2015 at 02:46:58PM +0200, Ulrich Weigand wrote:
> David Edelsohn wrote:
> > On Mon, Sep 7, 2015 at 11:47 PM, Alan Modra wrote:
> > > In https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67378 analysis I show
> > > the reason for this PR is that insns
On Thu, Sep 18, 2014 at 10:02:25PM -0600, Jeff Law wrote:
> On 09/16/14 00:03, Alan Modra wrote:
> >gcc testsuite additions? I decline. It is too soon. If you had read
> >my patch submission you'll see that at some stage gcc was supposed to
> >warn on conflicting sect
Ping?
https://gcc.gnu.org/ml/gcc-patches/2014-09/msg00704.html
--
Alan Modra
Australia Development Lab, IBM
XEXP (tem, 0)) == ncode
+ && XEXP (XEXP (tem, 0), 0) == lhs
+ && XEXP (XEXP (tem, 0), 1) == rhs)
+ break;
lneg &= rneg;
if (GET_CODE (tem) == NEG)
tem = XEXP (tem, 0), lneg = !lneg;
--
Alan Modra
Australia Development Lab, IBM
canonicalized |= this_neg;
+ canonicalized |= this_neg || i != n_ops - 2;
break;
case NEG:
--
Alan Modra
Australia Development Lab, IBM
rameter save
area, returning the address of something in the parameter save area
merits a warning. The ABIs explicitly state that the parameter save
area is not preserved over function calls.
Also note that anything left in a caller allocated parameter save area
will potentially be trashed by arguments written for the next call.
--
Alan Modra
Australia Development Lab, IBM
>emit_insn (gen_rlwinm (shift, addr, GEN_INT (3), GEN_INT (shift_mask)));
> - if (WORDS_BIG_ENDIAN)
> + if (BYTES_BIG_ENDIAN)
> shift = expand_simple_binop (SImode, XOR, shift, GEN_INT (shift_mask),
>shift, 1, OPTAB_LIB_WIDEN);
>*pshift =
})
+#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
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
at leaves just the comment near
the start of the file, and since it says "If REG_PARM_STACK_SPACE is
defined" that is still true and reads best for someone coming from a
target that doesn't define INCOMING_REG_PARM_STACK_SPACE.
> OK to apply.
Thanks for reviewing! Committed revision 211296.
--
Alan Modra
Australia Development Lab, IBM
tin_unreachable ();
+
+ for (j = 0; j < n; j++)
+f2 (j);
+}
--
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
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
stroyed in linkage stubs.
It turns out we don't traverse any linkage stubs.
See https://gcc.gnu.org/ml/gcc-patches/2014-11/msg00446.html.
--
Alan Modra
Australia Development Lab, IBM
= cselib_lookup (x, GET_MODE (x), 0, VOIDmode);
--
Alan Modra
Australia Development Lab, IBM
On Fri, Jan 16, 2015 at 11:03:24AM -0600, Segher Boessenkool wrote:
> On Fri, Jan 16, 2015 at 08:12:27PM +1030, Alan Modra wrote:
> > OK, so we need to fix this in the rs6000 backend, but it occurs to me
> > that cprop also has a bug here. It shouldn't be touching fixe
On Fri, Jan 16, 2015 at 09:35:16AM -0700, Jeff Law wrote:
> On 01/16/15 02:42, Alan Modra wrote:
> > * cprop.c (do_local_cprop): Disallow replacement of fixed
> > hard registers.
> OK. Extra credit for a testcase, ppc specific is obviously OK.
Thanks. Committed revi
On Fri, Jan 16, 2015 at 08:09:51PM -0600, Segher Boessenkool wrote:
> On Sat, Jan 17, 2015 at 11:07:12AM +1030, Alan Modra wrote:
> > On Fri, Jan 16, 2015 at 11:03:24AM -0600, Segher Boessenkool wrote:
> > > On Fri, Jan 16, 2015 at 08:12:27PM +1030, Alan Modra wrote:
> > &
On Sat, Jan 17, 2015 at 11:16:57AM +1030, Alan Modra wrote:
> On Fri, Jan 16, 2015 at 09:35:16AM -0700, Jeff Law wrote:
> > On 01/16/15 02:42, Alan Modra wrote:
> > > * cprop.c (do_local_cprop): Disallow replacement of fixed
> > > hard registers.
> > OK.
; invocation.
Since you've been looking at this area, please consider reviewing
https://gcc.gnu.org/ml/gcc-patches/2014-01/msg01157.html
--
Alan Modra
Australia Development Lab, IBM
On Mon, Jan 19, 2015 at 10:43:29PM -0500, David Edelsohn wrote:
> On Fri, Jan 17, 2014 at 10:58 PM, Alan Modra wrote:
> > This patch cures PR59828 by translating all the -mcpu options at once,
> > in order, to their equivalent assembler -m options by using a new spec
> > func
On Tue, Jan 20, 2015 at 09:26:12AM -0500, David Edelsohn wrote:
> On Tue, Jan 20, 2015 at 12:41 AM, Alan Modra wrote:
> > On Mon, Jan 19, 2015 at 10:43:29PM -0500, David Edelsohn wrote:
> >> On Fri, Jan 17, 2014 at 10:58 PM, Alan Modra wrote:
> >> > This patch cu
On Thu, Sep 04, 2014 at 10:05:38PM +0100, Maciej W. Rozycki wrote:
> On Thu, 4 Sep 2014, Alan Modra wrote:
>
> > > In fact if you look at the corresponding location expression for
> > > -fno-section-anchors code you get something quite screwy too.
> > >
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
On ppc64 ELFv2 just the
lazy plt resolution trashes r11.
--
Alan Modra
Australia Development Lab, IBM
ons make this fairly uncommon, for
instance the GNU powerpc linkers won't do this unless the function
address is taken in the executable by non-PIC (see
pointer_equality_needed in BFD code).
--
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
I does not appear to have a relocation defined
> > to support taking a difference of two symbols in different sections each.
> > This is seen as a failure in gcc.c-torture/compile/pr60655-2.c:
--
Alan Modra
Australia Development Lab, IBM
On Wed, Sep 03, 2014 at 03:01:17PM +0930, Alan Modra wrote:
> In fact if you look at the corresponding location expression for
> -fno-section-anchors code you get something quite screwy too.
>
> 018f 0108 0114 (DW_OP_breg10 (r10): 0; DW_OP_addr: 144;
> DW_OP_plus; DW
t (match_operand:TLSmode 0 "gpc_reg_operand" "=b")
- (plus:TLSmode (match_operand:TLSmode 1 "gpc_reg_operand" "b")
- (high:TLSmode
-(unspec:TLSmode [(match_operand:TLSmode 2 "rs6000_tls_symbol_ref" "")]
-
On Sun, Jun 19, 2011 at 11:04:12PM -0400, David Edelsohn wrote:
> On Sun, Jun 19, 2011 at 10:03 AM, Alan Modra wrote:
> >* config/rs6000/rs6000.c (create_TOC_reference): Wrap high part
> >of toc-relative address in CONST.
> >(rs6000_delegitimize_addres
nterest (tree fndecl)
/* Interesting functions that we are emitting in this object file. */
c_node = cgraph_get_node (fndecl);
+ c_node = cgraph_function_or_thunk_node (c_node, NULL);
return !cgraph_only_called_directly_p (c_node);
}
return false;
--
Alan Modra
Australia Development Lab, IBM
rop did look at
paradoxical subregs of hard regs before my change.
> Alan,
> is your change to process hard registers intentional?
I didn't set out to do anything special with hard regs one way or the
other, just extended what was already done for paradoxical subregs to
sign and zero e
On Mon, Jul 04, 2011 at 05:09:28PM -0700, H.J. Lu wrote:
> On Mon, Jul 4, 2011 at 4:54 PM, Alan Modra wrote:
> > I didn't set out to do anything special with hard regs one way or the
> > other, just extended what was already done for paradoxical subregs to
> > sign
_aix"
"*
{
return output_cbranch (operands[0], NULL, 0, insn);
@@ -15360,8 +15377,8 @@ (define_insn ""
"cc_reg_operand" "y")
(const_int 0)])
(pc)
- (return)))]
- "direct_return ()"
+ (any_return)))]
+ ""
"*
{
return output_cbranch (operands[0], NULL, 1, insn);
@@ -15491,9 +15508,9 @@ (define_insn "jump"
"b %l0"
[(set_attr "type" "branch")])
-(define_insn "return"
- [(return)]
- "direct_return ()"
+(define_insn "return"
+ [(any_return)]
+ ""
"{br|blr}"
[(set_attr "type" "jmpreg")])
@@ -16015,7 +16032,7 @@ (define_insn "*lmw"
(set_attr "cell_micro" "always")])
(define_insn "*return_internal_"
- [(return)
+ [(simple_return)
(use (match_operand:P 0 "register_operand" "lc"))]
""
"b%T0"
--
Alan Modra
Australia Development Lab, IBM
g other functions
r3 = 0;
exit_label:
return;
and now the r29 assignment cannot be moved past the "if", disabling
shrink wrap.
--
Alan Modra
Australia Development Lab, IBM
On Thu, Oct 13, 2011 at 07:04:59PM +0200, Bernd Schmidt wrote:
> On 10/13/11 18:50, Bernd Schmidt wrote:
> > On 10/13/11 14:27, Alan Modra wrote:
> >> Without the ifcvt
> >> optimization for a function "int foo (int x)" we might have something
> >>
+ 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
mode, info->first_fp_reg_save + i);
RTVEC_ELT (p, i + 4) = gen_rtx_SET (VOIDmode, reg, mem);
- if (DEFAULT_ABI == ABI_V4 || flag_shrink_wrap)
+ if (flag_shrink_wrap)
cfa_restores = alloc_reg_note (REG_CFA_RESTORE, reg,
cfa_restores);
}
--
Alan Modra
Australia Development Lab, IBM
This patch adds out-of-line vector saves and restores. To do this I
made some infrastructure changes to various functions like
rs6000_emit_savres_rtx that currently take boolean parameters (savep,
gpr, and lr). Rather than add yet another boolean to specify vector
regs, I chose to lump them all t
401 - 500 of 1009 matches
Mail list logo