at way in UI_From_gnu to be efficient, so can't we
find something more efficient than wi::gtu_p ? We need to
return No_Uint on Input not representing a 64-bit signed integer, can't this
be done by testing the number of HWIs in Input and its sign bit if its type is
unsigned?
--
Eric Botcazou
s,
or else they are simply not obvious. At worst they can privatize a public
function or remove an unused one, but then it's easy to undo that later.
--
Eric Botcazou
that you're exaggerating here, there might be some breakages but they
should be localized and fixable. We have 4.7-based 32-bit HWI cross-compilers
and they work pretty well, at least Ada and C, and I don't think that anything
has substantially changed on the mainline.
--
Eric Botcazou
hem.
Everything is explained on http://gcc.gnu.org/svnwrite.html, including how to
request write access (you can mention me as the sponsor).
--
Eric Botcazou
object is
packed: in this case, the caller passes an address that is not correctly
aligned to the callee, which can result in an unaligned access in the callee.
Tested on x86_64-suse-linux and SPARC/Solaris, OK for the mainline.
2014-10-06 Eric Botcazou
* calls.c (expand_call): Do
Hi,
you can have chains of clone functions in the callgraph but can_inline_edge_p
stops at the first clone when it is looking for DECL_STRUCT_FUNCTION, which
can fool the following conditions in the predicate.
Tested on x86_64-suse-linux, OK for the mainline?
2014-10-06 Eric Botcazou
essing" lines.
Tested on x86_64-suse-linux, applied on the mainline as obvious.
2014-10-06 Eric Botcazou
* dwarf2cfi.c (create_pseudo_cfg): Fix trace numbering.
--
Eric BotcazouIndex: dwarf2cfi.c
===
--
Hi,
we have run into a case on the ARM where LRA silently generates wrong code in
release mode, while reload (-mno-lra) would stop with the usual spill failure.
Tested on x86_64-suse-linux, OK for the mainline?
2014-10-06 Eric Botcazou
* lra-assigns.c (assign_by_spills): Turn
comparisons during LTRANS.
Tested on x86_64-suse-linux, OK for the mainline?
2014-10-06 Eric Botcazou
* lto-opts.c (lto_write_options): Handle -fmath-errno, -fsigned-zeros
and -ftrapping-math.
* lto-wrapper.c (merge_and_complain): Likewise.
(run_gcc): Likewise.
2014
derived
of the other in Ada, hence the latter being allowed to alias the former.
Tested on x86_64-suse-linux, OK for the mainline and 4.9 branch?
2014-10-06 Eric Botcazou
* gimple.c (gimple_get_alias_set): Return 0 for array types with non-
aliased component and that contain
Tested on x86_64-suse-linux, OK for the mainline?
2014-10-06 Eric Botcazou
* ipa-inline-transform.c (can_remove_node_now_p_1): Return false for a
master clone that has non-inline clones.
--
Eric BotcazouIndex: ipa-inline-transform.c
===
Tested on SPARC/Solaris, applied on the mainline.
2014-10-06 Eric Botcazou
* config/sparc/predicates.md (int_register_operand): Delete.
--
Eric BotcazouIndex: config/sparc/predicates.md
===
--- config/sparc
"-Av7"
+#endif
+
/* We use gcc _mcount for profiling. */
#define NO_PROFILE_COUNTERS 0
I think you would be better off adding a line to the arms of the existing code
#ifdef HAVE_AS_LEON
#define AS_LEON_FLAG "-Aleon"
#else
#define AS_LEON_FLAG "-Av8"
#endif
rather than duplicating it.
--
Eric Botcazou
config/sparc/sparc.h (TARGET_CPU_leon3v7): New define.
* config/sparc/sparc.md (cpu): Add leon3v7.
* config/sparc/sparc.opt (enum processor_type): Add leon3v7.
I assume that you have applied for write access so you'll be able to install
it yourself. Otherwise let me know if I can lend a hand.
--
Eric Botcazou
_p would just be:
struct function *caller_cfun = e->caller->cfun ();
struct function *callee_cfun = callee ? callee->cfun () : NULL;
--
Eric Botcazou
> The docs on the asm_p flags say there is sth wrong with the asm constraints
> so maybe better do
>
> if (!asm_p)
>error_at (loc, "");
>
> with an appropriate message and location?
OK, I guess I can copy-and-paste reload1.c:spill_failure there.
--
Eric Botcazou
cc-interface/utils.c:relate_alias_sets.
--
Eric Botcazou
> Ok, I will update that. Is there a way of generating the comments
> automatically?
Do you mean the ChangeLog? If so, contrib/mklog will generate a skeleton but
you'll still need to write the decription sentences.
--
Eric Botcazou
> OK, I guess I can copy-and-paste reload1.c:spill_failure there.
This generates the same error message than reload1.c:spill_failure (modulo the
class of the spill register, but it's not mentioned in the asm case either).
Tested on x86_64-suse-linux, OK for the mainline?
2014-10-
t type. The problem here is for an unconstrained array type and a
constrained (regular) array type with the same component type. Can I modify
gimple_canonical_types_compatible_p to return true in that case as well?
--
Eric Botcazou
ription is a bit confusing and "caller saved"/"callee saved"
should be avoided IMO, "call clobbered"/"call saved" is much clearer.
--
Eric Botcazou
As reported by Alan, the Ada compiler doesn't build anymore if you compile it
with -fno-inline because cuintp.c references a private function of uintp.adb.
Tested on x86_64-suse-linux, applied on all active branches.
2014-10-13 Eric Botcazou
Alan Modra
PR ada/
.
2014-10-14 Eric Botcazou
PR ada/62019
* tree-eh.c (tree_could_trap) : Revamp and really
do not choke on null node.
: Likewise.
--
Eric BotcazouIndex: tree-eh.c
===
--- tree-eh.c (revision 216193
(this only affects
the Ada compiler).
2014-10-15 Eric Botcazou
* stor-layout.c (self_referential_size): Do not promote arguments.
2014-10-15 Eric Botcazou
* gnat.dg/opt41.adb: New test.
* gnat.dg/opt41_pkg.ad[sb]: New helper.
--
Eric BotcazouIndex: stor-lay
Jan, any opinion on the following patch?
> 2014-10-06 Eric Botcazou
>
> * ipa-inline-transform.c (can_remove_node_now_p_1): Return false for a
> master clone that has non-inline clones.
https://gcc.gnu.org/ml/gcc-patches/2014-10/msg00436.html
Thanks in advanc
&& update_original
&& can_remove_node_now_p (e->callee, e))
i.e. I can set update_original to false just before the above test, that would
probably be sufficient to fix the bug.
--
Eric Botcazou
gt; -fprune-call-clobbers
> -freduce-call-clobbers
> -fcall-clobbers-ipa
>
> Any preferences, alternatives?
Given the existing -fcaller-saves, I'd keep "caller-saves" in the name, so
something along the lines of -foptimize-caller-saves or -fipa-caller-saves.
--
Eric Botcazou
+ "-fsanitize=address and -fsanitize=kernel-address "
+ "are incompatible with -fsanitize=thread");
}
Why aren't you using opts->x_ here, like all the code just above?
--
Eric Botcazou
> Well, that's a backport of ancient patch from trunk so all credits go
> there. And flag_sanitize is indeed handled differently from other
> compiler flags.
Really curious to know why...
--
Eric Botcazou
mainline and 4.9 branch?
2014-10-17 Eric Botcazou
* config/arm/arm.c (arm_set_return_address): Mark the store as frame
related, if any.
(thumb_set_return_address): Likewise.
--
Eric BotcazouIndex: config/arm/arm.c
=
register is garbage. That's
sort of OK, except when the called function is nested because the static chain
register has already been loaded with the proper static chain value by the
generic code, so overwriting it with garbage breaks the program.
Tested on PowerPC/AIX, OK for the main
do a bare move.
--
Eric Botcazou
r code.
so -foptimize-caller-saves can be understood as optimizing out the "extra
instructions to save and restore the registers around such calls" and, thus,
as having a direct relationship with -fcaller-saves.
--
Eric Botcazou
many inline clones)
Here's what I have installed on the mainline after re-testing, this defers the
check as much as possible.
2014-10-17 Eric Botcazou
* ipa-inline-transform.c (master_clone_with_noninline_clones_p): New.
(clone_inlined_nodes): Do not overwrite the clone i
> But, given the preference of a number of others for fipa-ra, could you live
> with that?
Yes, IMO that's too vague a name but still better than the existing one. :-)
--
Eric Botcazou
izer though, i.e. you now get gazillions of
sanitizer failures in the C and C++ testsuites.
--
Eric Botcazou
, or restore the previous logic.
--
Eric Botcazou
the
trick has been silently disabled.
Tested on x86_64-suse-linux, applied on mainline and 4.9 branch.
2014-10-27 Eric Botcazou
* gcc-interface/decl.c (gnat_to_gnu_entity) : Remove
superfluous computation for the max size.
: Likewise. Make sure that the max size
This fixes an assertion failure in relate_alias_sets on an instantiated packed
array type, because of a missing test before invoking the function.
Tested on x86_64-suse-linux, applied on mainline.
2014-10-27 Eric Botcazou
* gcc-interface/decl.c (gnat_to_gnu_entity): Apply special
This fixes an ICE on a string concatenation with the -gnatd.h switch, which
causes TREE_PUBLIC to be set on a local temporary
Tested on x86_64-suse-linux, applied on mainline.
2014-10-27 Eric Botcazou
* gcc-interface/utils.c (create_var_decl_1): For a variable declared
in
Tested on x86_64-suse-linux, applied on mainline.
2014-10-27 Eric Botcazou
* gcc-interface/trans.c (gnat_to_gnu) : Minor tweaks.
--
Eric BotcazouIndex: gcc-interface/trans.c
===
--- gcc-interface/trans.c (revision
ause I think it can be very delicate, so
extract_range_from_binary_expr will just try all the possible combinations for
PLUS and MINUS.
The testcases were attached to the first message in the thread, but I presume
that decent mail programs are a thing of the past. :-) Attached again.
--
Er
on the mainline.
2014-06-06 Eric Botcazou
* rtl.h (insn_location): Declare.
* cfgcleanup.c (try_forward_edges): Compare the locus of locations
with UNKNOWN_LOCATION.
* emit-rtl.c (insn_location): New function.
* final.c (notice_source_line): Check that
Similarly to what's done for gotos and conditional expressions.
Tested on x86_64-suse-linux, applied on the mainline as obvious.
2014-06-06 Eric Botcazou
* tree-cfg.c (make_edges) : Put a location onto the edge.
--
Eric BotcazouIndex: tree-
https://gcc.gnu.org/ml/gcc-patches/2014-05/msg00573.html
Thanks in advance.
--
Eric Botcazou
-x + INF] as the resulting range? But it can be bogus if x is itself
equal to +INF (unlike the input range [x + 1, +INF] which is always correct)
so this doesn't look valid to me. I don't see how we can get away without a
+INF(OVF) here, but I can compute it in extract_range_from_binary_expr_1 if
you prefer and try only [op0,op0] and [op1,op1].
--
Eric Botcazou
ressable if we don't see their
address taken.
--
Eric Botcazou
> Hmm, I don't see this.
Usual scheduler-sensitive stuff I guess, here's the assembly I have:
movqaliasing3_pkg__pointer(%rip), %rax
testq %rax, %rax
je .L6
cmpl$5, aliasing3_pkg__block(%rip)
movl$5, (%rax)
insns #4 and #5 have been wron
sa-loop-im.c attached to PR
tree-opt/57186 as well as 3 testcases.
> The algorithm is simple (similar to that sinking stores) to
> be light-weight on compile-time thus it may miss some
> opportunities but it fires quite a bit on GCC itself.
Is it sufficient for the aforementioned testcases?
--
Eric Botcazou
.
Tested on x86_64-suse-linux, applied on mainline and 4.9 branch as obvious.
2014-06-07 Eric Botcazou
* tree-ssa-tail-merge.c (same_succ_hash): Hash the static chain of a
call statement, if any.
(gimple_equal_p) : Compare the static chain of the call
statements
lly means ADDR_EXPR of this is taken.
--
Eric Botcazou
s worthless than any other information.
> So - let's say history is something of the past?
Maybe, but it's an annoying precedent: no clear explanation for the change, no
testcase and no audit of the affected front-ends (all I guess). That should
really have been discussed beforehand.
--
Eric Botcazou
> It is my fault here - I alwasy interpreted TREE_ADDRESSABLE this way and it
> seems to work for C/C++ that are the frontends I usually look into.
But that's not true, see the obvious C testcase I attached in this thread!
--
Eric Botcazou
is change is desirable/necessary for LTO,
this would be a good starting point. As for setting TREE_ADDRESSABLE on every
single global symbol in every single front-end, why not, but this seems more
complicated than treating global symbols as so by default (in non-LTO mode).
--
Eric Botcazou
Then why not just make the LTO front-end follow the existing semantics of
TREE_ADDRESSABLE and clear it when it figures out that the address is not
taken? That would seem the natural thing to do here.
--
Eric Botcazou
> Then why not just make the LTO front-end follow the existing semantics of
> TREE_ADDRESSABLE and clear it when it figures out that the address is not
> taken? That would seem the natural thing to do here.
I meant "clear the TREE_PUBLIC/DECL_EXTERNAL flags" of course...
--
Eric Botcazou
till we know that no pointers alias the accesses),
> we can as well rely on that flag - but then we should set it whenever
> a TU-local decl does not have its address taken (!TREE_ADDRESSABLE).
Why not just make the change to may_be_aliased in LTO mode, with a comment
saying that TREE_PUBLIC
but I didn't realize that it could in fact
lead to wrong code...
--
Eric Botcazou
nowledge
localized in this single predicate than spread over multiple files and FEs.
--
Eric Botcazou
its setting
in the front-ends, that's too error-prone IMO.
> I propose to add semantics for it.
Fine with me, as long as it's centralized somewhere in the middle-end.
--
Eric Botcazou
g on bug reports for real-
life software and/or new features, this would IMO be a better use of the time
you devote to GCC.
--
Eric Botcazou
for this.
Then how about using DECL_NONALIASED instead of TREE_ADDRESSABLE to achieve
the initial goal here? That is to say, may_be_aliased tests DECL_NONALIASED
for TREE_PUBLIC/DECL_EXTERNAL DECLs and the LTO front-end sets it properly.
--
Eric Botcazou
it.
* expr.c (do_tablejump): Set it.
* doc/rtl.texi (Flags): Document it.
* cfgrtl.c (try_redirect_by_replacing_jump): Revert last three changes.
that is to say, for memory accesses that can nominally trap but for which we
know that they actually don't.
--
Eric Botcazou
antime, the
failure mode is not catastrophic (100% reproducible segfault) and there is
always an easy workaround (generally a -fno-* switch).
--
Eric Botcazou
by design they can be). So it's a bit more fragile
> (we could make the operand scanner that "updates" TREE_ADDRESSABLE
> also unset DECL_NONALIASED of course).
IMO it's also more robust because the default (no DECL_NONALIASED) is safe.
--
Eric Botcazou
There was apparently a last-minute name change for DECL_NONALIASED.
Tested on x86_64-suse-linux, applied on mainline and 4.9 branch as obvious.
2014-06-12 Eric Botcazou
* tree-core.h (DECL_NONALIASED): Use proper spelling in comment.
--
Eric BotcazouIndex: tree-core.h
> 2014-06-13 Richard Biener
>
> * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
> Rewrite to propagate the VN result into all uses where
> possible and to remove stmts becoming dead because of that.
> (eliminate): Generalize stmt removal handling, remove in
range_from_binary_expr so that only one range
among [-INF,x], [x,+INF] and [x,x] is tried instead of the 3 ranges in a row.
I initially didn't want to do that because this breaks the separation between
extract_range_from_binary_expr_1 and extract_range_from_binary_expr but, given
their names, this is very likely acceptable. What do you think?
--
Eric Botcazou
NDEFINED attribute, a strict overflow warning
> has to be emitted here, at least for widening conversions.
Saturating, floating-point and fixed-point types are already excluded here,
see the beginning of the function.
--
Eric Botcazou
s the annoying effect
of generating useless integral conversions in convert.c, for example between
boolean types and integer types of the same precision.
The attached patch restores the old behavior for them. Bootstrapped/regtested
on x86_64-suse-linux, OK for the mainline?
2014-06-24 Eric Bot
into them that made it possible to have some control.
So, yes, it's pretty annoying to see totally bogus conversion nodes being
introduced into your ASTs behind your back...
--
Eric Botcazou
1 statically.
Thanks for correcting this annoying blunder...
--
Eric Botcazou
= GET_MODE_PRECISION (smallest_mode_for_size (bprecision, MODE_INT));
>if (bprecision > HOST_BITS_PER_DOUBLE_INT)
> bprecision = HOST_BITS_PER_DOUBLE_INT;
>
>/* Create stubs for sizetype and bitsizetype so we can create constants.
Why are you reducing the precision here?
--
Eric Botcazou
.
Yes, you are reducing it, the precision of bitsize must be at least that of
sizetype + BITS_PER_UNIT_LOG + 1.
--
Eric Botcazou
ine_reorg is run after pass_free_cfg and it can do pretty much what
it wants so I'd think that the answer is yes.
--
Eric Botcazou
ded and has 24-bit size so why is setting TYPE_PRECISION to 20
not sufficient to achieve what you want?
> Thus, in these cases, TYPE_SIZE and TYPE_SIZE_UNIT no longer have a
> "* BITS_PER_UNIT" mathematical relationship.
I'm skeptical this can work, it's pretty fundamental.
--
Eric Botcazou
l... In any case, having a type whose TYPE_SIZE is smaller
than the size of its MODE is a lie which will bite you back at some point.
--
Eric Botcazou
with 8-bit memory and 16-bit words.
TYPE_PRECISION was designed precisely for this purpose.
--
Eric Botcazou
ption model in the configure phase (libgcc and libjava only).
Tested on x86_64-suse-linux with --enable-sjlj-exceptions. The results are
not clean (except for objc and obj-c++) but sufficient to see that exceptions
still work after the patch. OK for the mainline?
2015-05-12 Eric Botcazou
c
these days.
> I trust you'll keep an eye out for any fallout.
Yes, I'm back in the SJLJ business.
--
Eric Botcazou
een done for non-local gotos (they also
use a buffer, the non-local goto save area).
The attached patch implements this update for the regular SJLJ scheme and
yields a clean ACATS testsuite. Tested on x86_64-suse-linux with --enable-
sjlj-exceptions, OK for the mainline?
2015-05-13 Eri
if it makes any difference for a --with-dwarf2 bootstrap, this means that
gcc and libgcc had different views of the EH scheme of the compiler.
The --disable-sjlj-exceptions breakage is worth investigating separately, so
please create a PR with Bugzilla (https://gcc.gnu.org/bugzilla) for it.
--
Eric Botcazou
> The libgo parts are fine, but since libgo is mirrored from an external
> repository I'll commit those parts myself.
Thanks!
> I assume I can go ahead and commit them now?
Yes, you can, the libgo bits are independent.
--
Eric Botcazou
7;s the same file and anyone fiddling with JUMP_TABLE_DATA_P
in active_insn_p should do a grep on the file/the entire RTL middle-end.
--
Eric Botcazou
nts, as done in gimplify_type_sizes.
If you have a patchlet for this one, you can open a PR and attach it.
--
Eric Botcazou
ise.
Isn't LAST_VIRTUAL_REGISTER + 1 the canonical regno to be used in this case?
--
Eric Botcazou
Self-explanatory, tested on x86_64-suse-linux, applied as obvious.
2015-05-19 Eric Botcazou
* stor-layout.c (finalize_type_size): Use AGGREGATE_TYPE_P.
(layout_type): Use RECORD_OR_UNION_TYPE_P.
--
Eric BotcazouIndex: stor-layout.c
Probably a misapplied patch: the dependency of the shared libgcc on the shared
libunwind is in a wrong place in Makefile. The patch also removes a useless
endif/ifneq pair.
Tested on x86_64-suse-linux and ia64-suse-linux, applied as obvious.
2015-05-19 Eric Botcazou
* Makefile.in
cc/gcc/lto/lto.c:3277
--
Eric Botcazou
ite_global_declarations (void);
+extern void note_types_used_by_globals (void);
The comment needs to be adjusted instead of removed and preferably be the same
as the one (ajusted too) above the function in utils.c.
--
Eric Botcazou
debug info, or they aren't and will be discarded by -feliminate-unused-
debug-types. And those not present in the source should be marked artificial.
--
Eric Botcazou
& type_in_anonymous_namespace_p (t2)))
{
/* We can not trip this when comparing ODR types, only when trying to
match different ODR derivations from different declarations.
So WARN should be always false. */
gcc_assert (!warn);
return false;
}
--
Eric Botcazou
> I noticed we were only doing this transformation for floats and not for
> integers, so I took the chance to move it to match.pd.
Isn't it so because this requires a symmetrical domain around 0?
--
Eric Botcazou
This is in preparation for the upcoming reimplementation.
Tested on x86_64-suse-linux, applied on the mainline.
2015-05-25 Eric Botcazou
* gcc-interface/ada-tree.h (DECL_RENAMING_GLOBAL_P): Rename into...
(DECL_GLOBAL_NONCONSTANT_RENAMING_P): ...this.
* gcc-interface
This is the bulk of the implementation of pragma Volatile_Full_Access. It is
piggybacked on the existing support for atomic accesses in gigi and generates
the load-modify-store sequences when need be.
Tested on x86_64-suse-linux, applied on the mainline.
2015-05-25 Eric Botcazou
Tested on x86_64-suse-linux, applied on the mainline.
2015-05-25 Eric Botcazou
* gcc-interface/decl.c (gnat_to_gnu_entity): Minor tweak.
* gcc-interface/trans.c (finalize_nrv_unc_r): Use CONSTRUCTOR_ELT.
* gcc-interface/utils.c (convert): Likewise and simplify
Tested on x86_64-suse-linux, applied on the mainline.
2015-05-25 Eric Botcazou
* gcc-interface/decl.c (gnat_to_gnu_entity) : Move around.
: Merge with E_Variable case.
: Remove 'object' label.
--
Eric BotcazouIndex: gcc-interf
Tested on x86_64-suse-linux, applied on the mainline.
2015-05-25 Eric Botcazou
* gcc-interface/decl.c (elaborate_expression): Take a const string
suffix instead of a tree.
(elaborate_expression_1): Likewise.
(elaborate_expression_2): Likewise
Tested on x86_64-suse-linux, applied on the mainline.
2015-05-25 Eric Botcazou
* get_targ.adb (C_Get_Float_Words_BE): Adjust import name.
(C_Get_Words_BE): Likewise.
(C_Get_Bytes_BE): Likewise.
(C_Get_Bits_BE): Likewise.
(Width_From_Size): Remove
The documentation says that the compiler issues a warning for the 'Size
attribute on discrete types if the specified value is larger than 64, but we
failed to so for values between 65 and 128.
Tested on x86_64-suse-linux, applied on the mainline.
2015-05-25 Eric Botcazou
1401 - 1500 of 4609 matches
Mail list logo