Similarly to x86, PowerPC and SPARC, this enables the use of custom run-time
descriptors in Ada, thus eliminating the need for trampolines and executable
stack in presence of pointers to nested functions.
Tested on Aarch64/Linux, OK for the mainline?
2016-11-13 Eric Botcazou
PR
ed on the architecture at some point. OK for the mainline?
2016-11-13 Eric Botcazou
PR ada/67205
* config/mips/mips.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.
--
Eric BotcazouIndex: config/mips/m
alignment to 64 bits seems undesirable in Thumb mode.
Tested on ARM/Linux, OK for the mainline?
2016-11-13 Eric Botcazou
PR ada/67205
* config/arm/arm.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.
(arm_function_ok_for_sibcall): Return false for an indirect call by
c (A : Arr) is begin null; end;
^
q.adb:7:3: note: code may be misoptimized unless -fno-strict-aliasing is used
and it's a bit surprising that -fno-strict-aliasing cannot silence it.
Tested on x86_64-suse-linux, OK for the mainline and 6 branch?
2016-11-13 Eric Botcazou
ined in defaults.h.
> If so then I don't see a problem with this. We will have to account for
> that when GCC allows 2-byte aligned microMIPS functions.
OK, thanks.
--
Eric Botcazou
trans0.s
# -fno-strict-aliasing -fverbose-asm -fltrans t.ltrans0.o
> That said, -Wno-lto-type-mismatch can be used to disable the warning as
> well.
Right, but the wording ("code may be misoptimized") is a bit scaring so I'd
rather avoid it when possible.
--
Eric Botcazou
ot;
would be less confusing.
--
Eric Botcazou
n effect?
Do you mean with the "optimize" attribute or somesuch? If so, I suppose not,
if the attributes are properly saved and restored; otherwise, I don't really
understand the question because I don't think that LTO saves the entire option
state on a per-function basis.
--
Eric Botcazou
> 2016-11-15 Richard Sandiford
> Alan Hayward
> David Sherwood
>
> * rtl.h (load_extend_op): Declare.
> * rtlanal.c (load_extend_op): New function.
I'd make it an inline function.
--
Eric Botcazou
to be an example of counter-productive C++ization: the
class doesn't provide any useful abstraction and the code gets obfuscated by
all the wrapper methods. Moreover it's mixed with real changes so very hard
to review. Can't you just fix what needs to be fixed first?
--
Eric Botcazou
e does span the whole operand.
OK, thanks.
--
Eric Botcazou
(subreg_size_highpart_offset): New function.
> (subreg_highpart_offset): Use it.
> * rtlanal.c (subreg_size_offset_from_lsb): New function.
> (subreg_offset_from_lsb): Likewise.
Please make the 3 wrappers inline functions.
--
Eric Botcazou
otherwise we don't know how to verify the constraint.
> + These conditions may be relaxed but subreg_regno_offset would
> + need to be redesigned. */
> + gcc_assert ((xsize % num_blocks) == 0);
> + unsigned int bytes_per_block = xsize / num_blocks;
> +
> + /* Get the number of the first block that contains the subreg and the
> byte + offset of the subreg from the start of that block. */
> + unsigned int block_number = offset / bytes_per_block;
> + unsigned int subblock_offset = offset % bytes_per_block;
>
>if (!rknown)
> {
> - info->representable_p = (!(y_offset_adj % (mode_multiple /
> nregs_multiple))); + /* Only the lowpart of each block is
> representable. */
> + info->representable_p
> + = (subblock_offset
> +== subreg_size_lowpart_offset (ysize, bytes_per_block));
>rknown = true;
> }
> - info->offset = (y_offset / (mode_multiple / nregs_multiple)) *
> nregs_ymode; +
This part is OK.
> + if (WORDS_BIG_ENDIAN != REG_WORDS_BIG_ENDIAN)
> +info->offset = (num_blocks - block_number - 1) * nregs_ymode;
> + else
> +info->offset = block_number * nregs_ymode;
>info->nregs = nregs_ymode;
> }
Why was the test on the mode size dropped?
--
Eric Botcazou
tion that the new one is the inverse of
the old one in the comment.
--
Eric Botcazou
ss" is always word endianness for these targets.
Since you tested on c6x-elf, that's OK, but I think that a comment before the
if (WORDS_BIG_ENDIAN != REG_WORDS_BIG_ENDIAN) test would be in order, stating
the implicit assumption made at this point.
--
Eric Botcazou
missing
guard on the alignment before invoking SLOW_UNALIGNED_ACCESS (as in every
other use of SLOW_UNALIGNED_ACCESS in the compiler).
Tested on arm-eabi, approved by Vladimir, applied on the mainline.
2016-11-17 Pip Cet
Eric Botcazou
PR rtl-optimization/78355
* doc
> Tested on aarch64-linux-gnu and x86_64-linux-gnu. OK to install?
>
> Thanks,
> Richard
>
>
> gcc/
> * rtlanal.c (load_extend_op): Move to...
> * rtl.h: ...here and make inline.
OK, thanks.
--
Eric Botcazou
eg_size_offset_from_lsb): Likewise.
OK, thanks.
--
Eric Botcazou
iously-duplicated if block.
> Rework the main handling so that it operates on independently-
> addressable YMODE-sized blocks. Use subreg_size_lowpart_offset
> to check lowpart offsets, without trying to find an equivalent
> integer mode first. Handle WORDS_BIG_ENDIAN != REG_WORDS_BIG_ENDIAN
> as a final register-endianness correction.
OK, thanks.
--
Eric Botcazou
Hi,
this is a wrong code regression at -O2 on the mainline for Alpha coming from
the REE pass (Alpha is one of the 3 architectures enabling REE at -O2 but I'm
probably going to enable it for 64-bit SPARC too). The problem arises when a
copy is needed in combine_reaching_defs:
/* If the dest
on x86_64-suse-linux, OK for the mainline and 6 branch?
2016-11-23 Eric Botcazou
PR middle-end/78429
* tree.h (wi::fits_to_boolean_p): New predicate.
(wi::fits_to_tree_p): Use it for boolean types.
* tree.c (int_fits_type_p): Likewise.
2016-11-23 Eric Botcazou
> Does it really do that with a (set (reg1:QI)), as opposed to a
> (set (strict_low_part (subreg:QI (reg1:DI)))?
That's the question (note that REE runs after register allocation).
--
Eric Botcazou
> vs. *addqi_1_slp, where QImode ADDQ insn is always emitted.
>
> So, the assumption in your last sentece is invalid, as far as x86 is
> concerned.
OK, thanks, if that's the consensus, I'll stick to version #1.
--
Eric Botcazou
For example, a couple of them were rejecting constant integers, leading to
suboptimal code before function returns in some cases.
Tested on SPARC/Solaris, applied on the mainline.
2016-11-23 Eric Botcazou
* config/sparc/sparc.md (*ashrsi3_extend): Rename to
with LOAD_EXTEND_OP of course).
--
Eric Botcazou
> This patch allows a target to increase the cost of anti-deps to better
> reflect the actual cost on the machine.
But it can already do it via the TARGET_SCHED_ADJUST_COST hook, can't it?
--
Eric Botcazou
te
in the former case too; this is sufficient to fix the regression.
Tested on x86-64/Linux and SPARC/Solaris, OK for the mainline?
2015-12-11 Eric Botcazou
PR middle-end/68215
* tree-vect-generic.c (tree_vec_extract): Remove GSI parameter.
Do not gimplify the result.
> Presumably we know the code we're generating here is always gimple.
In fact all the callers of tree_vec_extract pass the result to gimplify_build
routines, so everything is gimplified if need be; it was over-gimplification.
> OK for the trunk.
Thanks.
--
Eric Botcazou
> gcc:
> PR sanitizer/68418
> * c-family/c-ubsan.c (ubsan_instrument_shift): Disable
> sanitization of left shifts for wrapping signed types as well.
That's incorrect, it should be put into c-family/ChangeLog without prefix.
--
Eric Botcazou
On the heels of s390, this enables wide-int support in the SPARC back-end and
removes all the obsolete code conditionalized on HOST_BITS_PER_WIDE_INT == 32.
Boostrapped/regtested on SPARC/Solaris, applied on the mainline.
2015-12-12 Eric Botcazou
* config/sparc/sparc.h
The testcase was already tweaked for Glibc but it needs to be further tweaked
because of bugs in Solaris' libm. With the attached patch the test now passes
on my SPARC/Solaris 10 and my x86/Solaris 10 test machines.
OK for the mainline?
2015-12-14 Eric Botcazou
* gcc.dg/to
ld presumably not be modified.
Tested on i686-pc-mingw32, OK for the mainline?
2015-12-15 Eric Botcazou
* config/i386/cygming.h (STACK_REALIGN_DEFAULT): Define.
2015-12-15 Eric Botcazou
* gcc.target/i386/stack-realign-win.c: New test.
--
Eric BotcazouIndex: c
ote_nondebug_insn instead
> (which stops at CODE_LABEL) and keeps iterating if CODE_LABELs are found.
next_active_insn would have done the job, modulo the BARRIER thing, but do we
really need to care about BARRIER here?
--
Eric Botcazou
h the head comment
explaining this and invoked from rtx_renumbered_equal_p.
--
Eric Botcazou
> I'm also seeing
> +FAIL: gnat.dg/specs/debug1.ads scan-assembler-times DW_AT_artificial 17
> and from what I can see in gcc-testresults, I'm not alone.
Minor oversight, adjusted like so:
* gnat.dg/specs/debug1.ads: Bump final count to 18.
--
Eric Botcazou
Index: g
> This is a small problem found by a static analyzer, a function in
> bt-load can in theory return the address of a local variable.
>
> Bootstrapped and tested on x86_64-linux, ok?
OK, thanks.
--
Eric Botcazou
erns in the SPARC back-end, which serve no
useful purpose but pessimize register allocation in 32-bit mode by preventing
DImode logical operations from being split early.
Bootstrapped/regtested on SPARC/Solaris, applied on mainline and 5 branch.
2015-12-19 Eric Botcazou
PR rtl-optimizati
> I finally got around comitting the DCE patch so mainline lto bootstrap works
> up to this point.
Thanks!
> It would be great if you could take a look so we can get it finally fixed.
Let me commit a couple of Ada patches first and then I'll look into it.
--
Eric Botcazou
Tested on x86_64-suse-linux, applied on the mainline.
2015-12-20 Eric Botcazou
* gcc-interface/utils.c (maybe_pad_type): In type_annotate_only mode,
retrieve the component type if this is an array and do not issue the
warning for concurrent types.
--
Eric
Tested on x86_64-suse-linux, applied on the mainline.
2015-12-20 Eric Botcazou
* gcc-interface/decl.c (gnat_to_gnu_entity) : During
layout in type_annotate_only mode, skip discriminants of derived
tagged types renaming those of the parent type.
In
This is a regression present on the mainline only, a small oversight in the
overhaul of the implementation of renaming.
Tested on x86_64-suse-linux, applied on the mainline.
2015-12-20 Eric Botcazou
* gcc-interface/utils2.c (gnat_rewrite_reference) : New
case identical to
);
if (add_to_worklist)
worklist.safe_push (stmt);
- if (bb_contains_live_stmts && !is_gimple_debug (stmt))
+ if (add_to_worklist && bb_contains_live_stmts && !is_gimple_debug (stmt))
bitmap_set_bit (bb_contains_live_stmts, gimple_bb (stmt)->index);
}
which is not documented in the installed ChangeLog either.
--
Eric Botcazou
liminations++;
continue;
}
is apparently sufficient. Testing...
--
Eric Botcazou
> I suppose the CFG verifier should also catch this. I wonder how this can
> lead to wrong code as opossed to infinite loop?
> I can imagine DCE being confused about non-control-flow stmt and conclude
> the abnormal path as the path leaving the loop. I will look into the
> testcase more.
:
on of aarch64 is special here.
Tested on x86-64/Linux and Aarch64/Linux, OK for the mainline?
2015-12-20 Eric Botcazou
PR debug/60756
* var-tracking.c (tracked_record_parameter_p): New predicate.
(track_expr_p): Invoke it.
(add_stores): Likewise.
--
that
this works for TImode because, in this case, the back-end returns a PARALLEL
instead of a bare REG for the return value register.
Hence the attached patch, which extends this treatment to all integer modes
larger than TImode. Tested on arm-none-eabi, OK for the mainline
> the attached Ada testcase triggers an ICE with -mbig-endian -mhard-float:
And here it is.
--
Eric Botcazoupackage body P is
procedure Split (R : Rec; A, B, C, D : out Long_Float) is
begin
A := R.A;
B := R.B;
C := R.C;
D := R.D;
end;
end P;
package P is
type Rec is re
gt; 2015-12-23 Jakub Jelinek
>
> PR target/69015
> * ifcvt.c (find_cond_trap): Give up if returnjump_p (jump).
>
> * gcc.dg/pr69015.c: New test.
OK, thanks.
--
Eric Botcazou
> Normally we'd require a bootstrap & regression test. We're more lenient
> with patches to dead architectures.
I can do it if Sergei or others cannot though.
--
Eric Botcazou
> On powerpc64:
>
> FAIL: gnat.dg/specs/debug1.ads scan-assembler-times DW_AT_artificial 18
>
> $ grep -c DW_AT_artificial debug1.s
> 17
Test removed.
--
Eric Botcazou
failure.
Tested (incl. binary compatibility) on SPARC/Solaris, applied on the mainline.
2016-01-04 Eric Botcazou
PR target/69072
* config/sparc/sparc.c (scan_record_type): Take into account subfields
to compute the PACKED_P predicate.
(function_arg_record_value
This fixes another ICE on SPARC 64-bit in a corner case where __builtin_apply
is compiled with -mno-fpu/-msoft-float.
Tested (incl. binary compatibility) on SPARC/Solaris, applied on the mainline.
2016-01-04 Eric Botcazou
PR target/69100
* config/sparc/sparc.h
https://gcc.gnu.org/ml/gcc-patches/2015-12/msg01458.html
Thanks in advance.
--
Eric Botcazou
> This is really Windows specific setting, so Windows maintainer should
> OK the patch.
Makes sense, both maintainers now CCed.
https://gcc.gnu.org/ml/gcc-patches/2015-12/msg01458.html
--
Eric Botcazou
die): Likewise.
(gen_subroutine_type_die): Likewise.
(gen_typedef_die): Likewise.
(force_type_die): Adjust call to modified_type_die.
2016-01-05 Eric Botcazou
* gcc.dg/debug/dwarf2/sso.c: New test.
--
Eric BotcazouInde
> 'make bootstrap' works fine on ia64 but I've failed to run 'make check'.
> Testsuite's LD_LIBRARY_PATHs are not correct and can run tests.
You need to run 'make -k check' from the top level build directory.
--
Eric Botcazou
> This change adds TYPE_DECL nodes for XVE/XVU parallel types to lexical
> scopes so that these types are properly scoped in the debug information.
OK, thanks.
--
Eric Botcazou
gt; many different code paths. I guess committing the one-liner in the
> hope that it won't break some target is the best approach one can do.
Thanks for devising the fix!
--
Eric Botcazou
The test doesn't really make sense in 64-bit mode.
Applied on the mainline.
2016-01-06 Eric Botcazou
* gcc.target/sparc/20151219-1.c: Skip in 64-bit mode.
--
Eric BotcazouIndex: gcc.target/sparc/2015121
cc_assert (!TREE_ADDRESSABLE (type) && COMPLETE_TYPE_P (type));
--
Eric Botcazou
> Sounds like a good excuse to add a guality for Ada (which has unique
> needs for dwarf).
Well, the guality testsuite is a pain to maintain so I'd rather not.
The GDB testsuite is clearly the right place for this kind of testcases.
--
Eric Botcazou
mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset);
both in record_store and check_mem_read_rtx, so I wonder if we shouldn't bite
the bullet and try enhancing get_addr since it's a mainline-only regression.
--
Eric Botcazou
as far as I'm concerned).
--
Eric Botcazou
01-18 Eric Botcazou
PR ada/69219
* gcc-interface/trans.c (check_inlining_for_nested_subprog): Consider
the parent function instead of the current function in order to issue
the warning or the error. Add guard for ignored functions.
2016-01-18 Eric Bot
easily changed.
--
Eric Botcazou
In preparation for the implementation of the 'char' compatibility fix.
Tested on x86_64-suse-linux, applied on the mainline.
2016-01-18 Eric Botcazou
* gcc-interface/ada-tree.h (TYPE_IMPLEMENTS_PACKED_ARRAY_P): Rename to
(TYPE_IMPL_PACKED_ARRAY_P
In preparation for the implementation of the 'char' compatibility fix.
Tested on x86_64-suse-linux, applied on the mainline.
2016-01-18 Eric Botcazou
* gcc-interface/gigi.h (build_call_raise_column): Adjust prototype.
(build_call_raise_range)
ing
testing with make -k check. Or else could this be a parallel compilation bug?
Could you post the list of files that differ? How do they differ exactly?
--
Eric Botcazou
> 2016-01-05 Eric Botcazou
>
> * dwarf2out.c (need_endianity_attribute_p): New inline predicate.
> (base_type_die): Add REVERSE parameter and attach DW_AT_endianity to
> the DIE accordingly.
> (modified_type_die): Add REVERSE parameter and p
INUS since
it's non-canonical but we'd probably better be forgiving for this one).
--
Eric Botcazou
; DSE will only care about CONST_INT and +. For minus, I thought it can be
> canonical for the minimum signed value, if it is originally subtracted (not
> the case for DSE).
OK. And var-tracking also manipulates MINUS - CONST_INTs coming from stack
decrements.
--
Eric Botcazou
initial state.
Tested on x86_64-suse-linux, OK for the mainline?
2016-01-20 Eric Botcazou
* ipa-inline.c (can_inline_edge_p): Back out overzealous check on
flag_non_call_exceptions compatibility.
--
Eric BotcazouIndex: ipa-inline.c
As promised earlier, this fixes the signedness compatibility issue between
Character/Interfaces.C.char in Ada and 'char' in the C family of languages.
Tested on x86_64-suse-linux, applied on the mainline.
2016-01-20 Eric Botcazou
* exp_ch2.adb (Expand_Current_Value
e trailing spaces in the patch.
--
Eric Botcazou
above renaming.
OK for mainline, but investigate whether you can better format the
config/c6x/c6x.c line, for example:
+ best_reg
+ = find_rename_reg (this_head, super_class, &unavailable, old_reg, true);
--
Eric Botcazou
targets.
> Having this pass enabled on a wildly popular target would help
> catching eventual bugs in the pass.
FWIW we're about to submit a port that makes a heavy use of it.
--
Eric Botcazou
> It's unfortunate that GCC does not have separate patterns for a safe
> ADD used by reload.
It does, the addptrM3 pattern, but it works only with LRA at the moment.
--
Eric Botcazou
se it.
If Richard and you think it's the way to go, then fine by me.
--
Eric Botcazou
of couse).
>
> Thus similar to Erics fix but avoiding the aggregate copy.
Yes, that should be doable, but I'm not sure it's worth the hassle.
--
Eric Botcazou
The char's in gcc.dg/builtin-arith-overflow-1.c are almost all explicitly
signed or unsigned, except for 2 of them, but that's enough to make it fail
for targets whose char is unsigned.
Tested on x86-64 and a private port, applied on mainline as obvious.
2014-12-11 Eri
se-linux, applied on all active branches.
2014-12-11 Eric Botcazou
* doc/md.texi (Insn Lengths): Fix description of (pc).
--
Eric BotcazouIndex: doc/md.texi
===
--- doc/md.texi (revision 218617)
+++ doc/md.texi (work
linux host). I think that the failures
are common to all newlib targets and very likely related to:
https://gcc.gnu.org/ml/gcc-patches/2014-12/msg00357.html
OK for the mainline?
--
Eric Botcazou
ChangeLog
2014-12-11 Eric Botcazou
* config.sub: Update from upstream config repo.
* configure.ac: Add Visium support.
* configure: Regenerate.
--
Eric BotcazouIndex: config.sub
===
--- config.sub
libgcc/ChangeLog
2014-12-11 Eric Botcazou
* config.host: Add Visium support.
* config/visium: New directory.
--
Eric BotcazouIndex: config.host
===
--- config.host (revision 218617)
+++ config.host
gcc/ChangeLog
2014-12-11 Eric Botcazou
* config.gcc: Add Visium support.
* configure.ac: Likewise.
* configure: Regenerate.
* doc/invoke.texi: Document Visium options.
* doc/md.texi: Document Visium constraints.
* common/config/visium: New
gcc/testsuite/ChangeLog:
2014-12-11 Eric Botcazou
* lib/target-supports.exp (check_profiling_available): Return 0 for
Visium.
(check_effective_target_tls_runtime): Likewise.
(check_effective_target_logical_op_short_circuit): Return 1 for Visium
disabling it: the aggregate is passed directly so it's probably
small and, in the case at hand, the optimized caller would do 2 extractions
instead of only 1 so the gain is not obvious.
--
Eric Botcazou
ode) % GET_MODE_SIZE (ymode)) == 0);
gcc_assert ((nregs_xmode % nregs_ymode) == 0);
So what would it take to do things properly here, i.e. relax the conditions
and adjust downstream?
--
Eric Botcazou
(emit_function_directives): Add emitted function to map with offsets.
Entries must (generally) start with either "New", "Likewise" or a verb.
--
Eric Botcazou
om_reg_equal (rsp, insn, src, x);
Can't we improve on this? rsp->sign_bit_copies is modified both here and in
update_rsp_from_reg_equal, but rsp->nonzero_bits is modified only in the
latter function. There is no reason for this discrepancy, so they ought to be
handled the same way, either entirely here or entirely in the function.
--
Eric Botcazou
guess I can reuse the copyright notice of soft-fp for them.
--
Eric Botcazou
nd you should verify that the port builds cleanly with --enable-werror
> -always, for both 32-bit and 64-bit hosts, when building using current trunk
> GCC).
Do you mean a bootstrap of the cross-compiler with --enable-werror-always on a
32-bit and a 64-bit host? OK, I'll do that.
Thanks for the review.
--
Eric Botcazou
c: New test.
OK, thanks.
--
Eric Botcazou
d gain much.
> We already have early-outs for the simple cases, such as:
Right, but they are more of special cases and this one is not.
--
Eric Botcazou
ts building upstream glibc with a gcc configured with not
> --with-cpu option, for example.
Certainly annoying.
> I think it would be reasonable to have gcc targetting ultrasparc
> extensions by default in sparc64-*-linux*. WDYT?
No strong opinion. FreeBSD and OpenBSD already do it so why not?
DaveM, any opinion?
--
Eric Botcazou
ed REG_DEAD fixes the immediate problem.
> Is that the right approach? What do you guys think?
Nope, consumers of REG_DEAD notes must instead explicitly ask the DF framework
to recompute them.
--
Eric Botcazou
, because it goes
> against the standard message about building your program with GCC not
> imposing restrictions on distribution of the resulting binary.)
OK, I'm going to reimplement it based on libgcc2.c then.
--
Eric Botcazou
oid using them in fwprop.c if possible.
--
Eric Botcazou
Revision version, the divmod and the parity routines have been reimplemented
based on libgcc2.c and all the new files are now under GPL+exception.
libgcc/ChangeLog
2014-12-19 Eric Botcazou
* config.host: Add Visium support.
* config/visium: New directory.
--
Eric
ZE (ymode);
> gcc_assert (mode_multiple != 0);
>
> which clearly isn't a useful value if the division isn't exact.
> Do you mean that, since mode_multiple isn't correct for the
> DI-of-a-CI case, we should reformulate the end of the function
> to avoid using mode_multiple at all?
Yes.
--
Eric Botcazou
2601 - 2700 of 4611 matches
Mail list logo