Hi,
This is the first part of reduction support in loop-aware SLP. The
purpose of the patch is to handle unrolled reductions such as:
#a1 = phi a0, a5
...
a2 = a1 + x
...
a3 = a2 + y
...
a5 = a4 + z
Such sequence of statements is gathered into a reduction chain and
serves as a root for an SLP
This part adds the actual code for reduction support.
Bootstrapped and tested on powerpc64-suse-linux.
I am planning to apply it later today.
Ira
ChangeLog:
PR tree-optimization/41881
* tree-vectorizer.h (struct _loop_vec_info): Add new field
reduction_chains along with a macro
Hi!
When an addressable var is optimized into non-addressable, we didn't
clean up MEM_REFs containing ADDR_EXPR of such VARs in debug stmts. This
got later on folded into the var itself and caused ssa verification errors.
Fixed by trying to rewrite it and if it fails, resetting.
Hi!
This patch optimizes away unneeded DW_OP_GNU_converts. mem_loc_descriptor
attempts to keep the operands signed when it returns, if next op
needs it unsigned again with the same size, there might be useless
converts. The patch won't change DW_OP_GNU_convert to integral from
non-integral (so
To make consistent inline decisions between profile-gen and
profile-use, probably better to check these two:
flag_profile_arcs and flag_branch_probabilities. -fprofile-use
enables profile-arcs, and value profiling is enabled only when
edge/branch profiling is enabled (so no need to be checked).
2011/5/16 Richard Guenther richard.guent...@gmail.com:
On Mon, May 16, 2011 at 3:45 PM, Michael Matz m...@suse.de wrote:
Hi,
On Mon, 16 May 2011, Richard Guenther wrote:
I think conversion _to_ BOOLEAN_TYPE shouldn't be useless, on the
grounds that it requires booleanization (at least
Hi,
2011-05-05 Tom de Vries t...@codesourcery.com
PR target/45098
* tree-ssa-loop-ivopts.c (seq_cost): Fix call to rtx_cost.
OK,
Zdenek
Ok, thanks for explaining it. So would be patch ok for apply without
the precision setting?
Sure, everything but the gcc-interface/misc.c part is OK. Thanks.
--
Eric Botcazou
2011/5/18 Eric Botcazou ebotca...@adacore.com:
Ok, thanks for explaining it. So would be patch ok for apply without
the precision setting?
Sure, everything but the gcc-interface/misc.c part is OK. Thanks.
--
Eric Botcazou
Hmm, you mean the initialization of boolean_false_node is wrong,
* tree-ssa.c (useless_type_conversion_p): Preserve conversions
to non-1-precision BOOLEAN_TYPEs.
This looks like overeager if you're allowing non-boolean types in tree-cfg.c.
The conversion can be stripped if the source type has precision 1, can't it?
--
Eric Botcazou
On Wed, 18 May 2011, Eric Botcazou wrote:
* tree-ssa.c (useless_type_conversion_p): Preserve conversions
to non-1-precision BOOLEAN_TYPEs.
This looks like overeager if you're allowing non-boolean types in tree-cfg.c.
The conversion can be stripped if the source type has precision
This fixes PR49018, ifcombine looks for side-effects but instead
asks only gimple_has_volatile_ops. And gimple_has_side_effects
disregards that volatile asms have side-effects. The function
also doesn't handle all stmts gracefully so I fixed it as well
as turning the asserts to checking
Uros,
The test (tls.c), used to check all TLS models is attached to the
message. I plan to convert it to proper dg test... ;)
I've got it in my tree since you sent it to me while debugging/testing
support for the various TLS models on Solaris. I'd really prefer (and
have modified it this way)
Hi!
The attached testcase ICEs on arm, because extract_fixed_bit_field
with tmode SImode (and SImode non-NULL target) decides to use DImode for
the signed shifts, but doesn't clear target and thus attempts to use
that SImode target for DImode shifts.
The code apparently already has if (mode !=
Ping.
On 20/04/11 16:27, Andrew Stubbs wrote:
This patch adds basic support for the Thumb ADDW and SUBW instructions.
The patch permits the compiler to use the new instructions for constants
that can be loaded with a single instruction (i.e. 16-bit unshifted),
but does not support use of addw
On Sat, Oct 23, 2010 at 10:12 AM, H.J. Lu hjl.to...@gmail.com wrote:
On Wed, Sep 8, 2010 at 9:43 AM, Martin Jambor mjam...@suse.cz wrote:
Hi,
this patch reimplements build_ref_for_offset so that it simply creates
a MEM_REF rather than trying to figure out what combination of
component and
On Tue, Apr 26, 2011 at 3:32 PM, H.J. Lu hjl.to...@gmail.com wrote:
On Mon, Apr 4, 2011 at 6:05 PM, H.J. Lu hjl.to...@gmail.com wrote:
On Thu, Mar 31, 2011 at 5:05 AM, Kenneth Zadeck
zad...@naturalbridge.com wrote:
we hit this limit trying to write the explicit semantics for a
Basile Starynkevitch bas...@starynkevitch.net writes:
On Wed, May 18, 2011 at 10:27:11AM +0400, Andrey Belevantsev wrote:
On 17.05.2011 23:42, Basile Starynkevitch wrote:
On Tue, 17 May 2011 21:30:44 +0200
Pierre Vittetpier...@pvittet.com wrote:
My contributor number is 634276.
You
On Tue, Apr 26, 2011 at 6:07 AM, H.J. Lu hjl.to...@gmail.com wrote:
On Sat, Apr 9, 2011 at 6:52 PM, H.J. Lu hjl.to...@gmail.com wrote:
On Thu, Mar 24, 2011 at 12:15 AM, H.J. Lu hjl.to...@gmail.com wrote:
On Wed, Mar 23, 2011 at 12:22 PM, Ulrich Weigand uweig...@de.ibm.com
wrote:
Richard
Janus Weil wrote:
The patch was regtested on x86_64-unknown-linux-gnu. Ok for trunk?
OK. Thanks for the patch!
(What next on your gfortran agenda?)
Tobias
PS: For the following two patches review is pending:
My trans*.c coarray patch at
http://gcc.gnu.org/ml/fortran/2011-05/msg00123.html
Hello
As follow-up for logical to binary transition
2011-05-18 Kai Tietz kti...@redhat.com
* tree-cfg.c (verify_gimple_assign_binary): Barf on
TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR.
(gimplify_expr): Boolify TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR,
Hello!
This patch fixes an obvious problem: the fma4_fmsubadd/fma4_fmaddsub
instruction templates don't generate vfmsubaddpd/vfmaddsubpd because
they don't use ssemodesuffix
This passes bootstrap on x86_64 on trunk. Okay to commit?
See comments in the code.
BTW, I'm testing on
Hi,
The attached patch adds support for the bfin bf592 part.
* doc/invoke.texi (Blackfin Options): -mcpu accepts bf592.
* config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
bf592-none.
* config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
Hi,
The attached patch adds a new test for the bfin bf592 part.
* gcc.target/bfin/mcpu-bf592.c: New test.
Ok to add to trunk?
thanks,
Stu
Index: gcc/testsuite/gcc.target/bfin/mcpu-bf592.c
===
---
On 05/17/2011 09:17 AM, Tom de Vries wrote:
On 05/17/2011 09:10 AM, Tom de Vries wrote:
Hi Zdenek,
I have a patch set for for PR45098.
01_object-size-target.patch
02_pr45098-rtx-cost-set.patch
03_pr45098-computation-cost.patch
04_pr45098-iv-init-cost.patch
05_pr45098-bound-cost.patch
On 05/17/2011 09:19 AM, Tom de Vries wrote:
On 05/17/2011 09:10 AM, Tom de Vries wrote:
Hi Zdenek,
I have a patch set for for PR45098.
01_object-size-target.patch
02_pr45098-rtx-cost-set.patch
03_pr45098-computation-cost.patch
04_pr45098-iv-init-cost.patch
05_pr45098-bound-cost.patch
On 05/17/2011 09:20 AM, Tom de Vries wrote:
On 05/17/2011 09:10 AM, Tom de Vries wrote:
Hi Zdenek,
I have a patch set for for PR45098.
01_object-size-target.patch
02_pr45098-rtx-cost-set.patch
03_pr45098-computation-cost.patch
04_pr45098-iv-init-cost.patch
05_pr45098-bound-cost.patch
On 05/11/2011 05:27 PM, Jason Merrill wrote:
We want to allow a constexpr friend function that takes the current
class, so we need to defer checking the literality of parameter types
until any classes involved are complete.
It was pointed out to me that the restriction already only applies to
We can end up with an infinite recursion as gimple_register_type
tries to register TYPE_MAIN_VARIANT first. This is because we
are being called from the LTO type-fixup code which walks the
type graph and adjusts types to their leaders. So we can
be called for type SCCs that are only
On 05/17/2011 09:21 AM, Tom de Vries wrote:
On 05/17/2011 09:10 AM, Tom de Vries wrote:
Hi Zdenek,
I have a patch set for for PR45098.
01_object-size-target.patch
02_pr45098-rtx-cost-set.patch
03_pr45098-computation-cost.patch
04_pr45098-iv-init-cost.patch
05_pr45098-bound-cost.patch
On 05/17/2011 09:21 AM, Tom de Vries wrote:
On 05/17/2011 09:10 AM, Tom de Vries wrote:
Hi Zdenek,
I have a patch set for for PR45098.
01_object-size-target.patch
02_pr45098-rtx-cost-set.patch
03_pr45098-computation-cost.patch
04_pr45098-iv-init-cost.patch
05_pr45098-bound-cost.patch
Hello!
2011-05-18 Uros Bizjak ubiz...@gmail.com
* config/i386/i386.md (*tls_global_dynamic_32_gnu): Split asm template.
(*tls_global_dynamic_64): Ditto.
(*tls_local_dynamic_base_32_gnu): Ditto.
(*tls_local_dynamic_base_64): Ditto.
Thanks for the background; I will keep the principle in mind. IMHO, in
a case like this where we're logically printing one diagnostic (one
error and then some number of explanatory notes) keeping all the logic
for the diagnostic centralized makes more sense.
I understand, but that means we
On Tue, 2011-05-17 at 12:48 -0400, DJ Delorie wrote:
What I don't understand is why the newlib change broke older compilers.
Older compilers have the older libiberty. At the moment, libiberty
cannot be built by *any* released gcc, because you cannot *build* any
released gcc, because it
Though not common, people can do this:
1. for profile gen:
gcc -fprofile-arcs ...
2. for profile use
gcc -fbranch-probabilities ...
The new change won't help those. Your original place will be ok if you
test profile_arcs and branch_probability flags.
David
On Wed, May 18, 2011 at 10:39 AM,
And the problem is that libiberty is assuming that it *knows* what
functions newlib provides, so that it doesn't need to check
directly. This is just broken...
Historically, cygwin was built using libiberty and newlib, so you did
not have a runtime at the time you were building libiberty,
Hi,
tested x86_64-linux, committed.
Thanks,
Paolo.
//
2011-05-18 Paolo Carlini paolo.carl...@oracle.com
* libsupc++/initializer_list: Use noexcept specifier.
(initializer_list::size, begin, end): Qualify as const.
* include/bits/move.h (__addressof,
On May 18 14:03, DJ Delorie wrote:
And the problem is that libiberty is assuming that it *knows* what
functions newlib provides, so that it doesn't need to check
directly. This is just broken...
Historically, cygwin was built using libiberty and newlib, so you did
not have a runtime
Hi Zdenek,
On 05/18/2011 05:24 PM, Zdenek Dvorak wrote:
Hi,
How about:
...
@@ -2866,6 +2878,8 @@ computation_cost (tree expr, bool speed)
if (MEM_P (rslt))
cost += address_cost (XEXP (rslt, 0), TYPE_MODE (type),
TYPE_ADDR_SPACE (type), speed);
+ else if
2011/5/18 Kai Tietz ktiet...@googlemail.com:
Hello
As follow-up for logical to binary transition
2011-05-18 Kai Tietz kti...@redhat.com
* tree-cfg.c (verify_gimple_assign_binary): Barf on
TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR.
(gimplify_expr): Boolify
On Wed, May 18, 2011 at 10:52 AM, Xinliang David Li davi...@google.com wrote:
The new change won't help those. Your original place will be ok if you
test profile_arcs and branch_probability flags.
Ah, yes. I see your point now. Reverted to the original change with
condition profile_arc_flag
In gcc, not all passes have user level control to turn it on/off, and
there is no way to flip on/off the pass for a subset of functions. I
implemented a generic option handling scheme in gcc to allow
disabling/enabling any gcc pass for any specified function(s). The
new options will be very
Ok with that change to google/main with some retesting.
David
On Wed, May 18, 2011 at 11:34 AM, Mark Heffernan meh...@google.com wrote:
On Wed, May 18, 2011 at 10:52 AM, Xinliang David Li davi...@google.com
wrote:
The new change won't help those. Your original place will be ok if you
test
On 05/18/2011 01:45 PM, Jason Merrill wrote:
Thanks for the background; I will keep the principle in mind. IMHO, in
a case like this where we're logically printing one diagnostic (one
error and then some number of explanatory notes) keeping all the logic
for the diagnostic centralized makes
The patch was regtested on x86_64-unknown-linux-gnu. Ok for trunk?
OK. Thanks for the patch!
Thanks, Tobias. Committed as r173874.
(What next on your gfortran agenda?)
Well, I am pretty busy with my day job at university and working on
my PhD, which will not allow me to make huge leaps on
On Wed, 18 May 2011, DJ Delorie wrote:
At this point, though, I'm tempted to say there's no such thing as a
target libiberty and rip all the target-libiberty rules out, and let
Yes please. I've been arguing for that for some time.
http://gcc.gnu.org/ml/gcc/2009-04/msg00410.html
What about these?
dependencies = { module=all-target-fastjar; on=all-target-libiberty; };
dependencies = { module=all-target-libobjc; on=all-target-libiberty; };
dependencies = { module=all-target-libstdc++-v3; on=all-target-libiberty; };
Thanks for the comment. Will fix those.
David
On Wed, May 18, 2011 at 12:30 PM, Joseph S. Myers
jos...@codesourcery.com wrote:
On Wed, 18 May 2011, David Li wrote:
+ error (Unrecognized option %s, is_enable ? -fenable :
-fdisable);
+ error (Unknown pass %s specified in %s,
+
On 05/18/2011 03:00 PM, Nathan Froyd wrote:
Thank you for the review. I'll go back and try things the way you suggest;
before I go off and do that, I've taken your comments to mean that:
- fn_type_unification/type_unification_real and associated callers should take
a boolean `explain'
This patch continues the cleanup of ARM option handling by making
-mfpu= handling use Enum, with the table of FPUs moved to a new
arm-fpus.def.
Tested building cc1 and xgcc for cross to arm-eabi. Will commit to
trunk in the absence of target maintainer objections.
contrib:
2011-05-18 Joseph
Hi,
the attached patch updates the documentation and error messages for
the -ffpe-trap= option:
- The IEEE 754 name for the loss of precision exception is
inexact, and not precision (both in 754-1985 and 754-2008). So use
that instead, while still allowing precision as an alias for inexact
for
On 05/18/2011 05:41 AM, Gabriel Dos Reis wrote:
On Tue, May 17, 2011 at 2:46 PM, Toon Moenet...@moene.org wrote:
On 05/17/2011 08:32 PM, Uros Bizjak wrote:
Tested on x86_64-pc-linux-gnu {, m32} with --enable-build-with-cxx.
Committed to mainline SVN as obvious.
Does that mean that I can
On Wed, May 18, 2011 at 7:20 PM, Jan Hubicka hubi...@ucw.cz wrote:
We can end up with an infinite recursion as gimple_register_type
tries to register TYPE_MAIN_VARIANT first. This is because we
are being called from the LTO type-fixup code which walks the
type graph and adjusts types to
Hi!
The testcases below are miscompiled (execute/ by 4.6/4.7, pr49039.C
by 4.6 and twice so by 4.7 (so much that it doesn't abort)), because
VRP thinks that
MIN_EXPR ~[-1UL, -1UL], ~[0, 0] is ~[0, 0] (correct is VARYING and similarly
MAX_EXPR ~[-1UL, -1UL], ~[0, 0] is ~[-1UL, -1UL]).
On Wed, May 18, 2011 at 8:37 PM, David Li davi...@google.com wrote:
In gcc, not all passes have user level control to turn it on/off, and
there is no way to flip on/off the pass for a subset of functions. I
implemented a generic option handling scheme in gcc to allow
disabling/enabling any
On Wed, May 18, 2011 at 10:17 PM, Toon Moene t...@moene.org wrote:
On 05/18/2011 05:41 AM, Gabriel Dos Reis wrote:
On Tue, May 17, 2011 at 2:46 PM, Toon Moenet...@moene.org wrote:
On 05/17/2011 08:32 PM, Uros Bizjak wrote:
Tested on x86_64-pc-linux-gnu {, m32} with --enable-build-with-cxx.
On Wed, May 18, 2011 at 10:21 PM, Jakub Jelinek ja...@redhat.com wrote:
Hi!
The testcases below are miscompiled (execute/ by 4.6/4.7, pr49039.C
by 4.6 and twice so by 4.7 (so much that it doesn't abort)), because
VRP thinks that
MIN_EXPR ~[-1UL, -1UL], ~[0, 0] is ~[0, 0] (correct is VARYING
Will fix the Changelog, and add documentation.
Thanks,
David
On Wed, May 18, 2011 at 1:26 PM, Richard Guenther
richard.guent...@gmail.com wrote:
On Wed, May 18, 2011 at 8:37 PM, David Li davi...@google.com wrote:
In gcc, not all passes have user level control to turn it on/off, and
there
On Wed, May 18, 2011 at 10:32:49PM +0200, Richard Guenther wrote:
On Wed, May 18, 2011 at 10:21 PM, Jakub Jelinek ja...@redhat.com wrote:
Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk/4.6?
Ok.
Thanks.
Isn't it latent on the 4.5 branch as well?
Not only latent,
Hi,
This patch properly handles 256bit load cast. OK for trunk if there
is no regression? I will also prepare a patch for 4.6 branch.
Thanks.
H.J.
--
gcc/
2011-05-18 H.J. Lu hongjiu...@intel.com
PR target/49002
* config/i386/sse.md
On 05/18/2011 10:31 PM, Richard Guenther wrote:
Not that I'm too excited to see GCC built with a C++ compiler (or even C++
features being used).
Hmmm, you think using false as a value for a pointer-returning
function is just A-OK ?
Duh, I'm glad I'm using Fortran, where the programmer
On Wed, May 18, 2011 at 10:44 PM, Toon Moene t...@moene.org wrote:
On 05/18/2011 10:31 PM, Richard Guenther wrote:
Not that I'm too excited to see GCC built with a C++ compiler (or even C++
features being used).
Hmmm, you think using false as a value for a pointer-returning function is
just
Hi,
Resubmitting with comment.
The init cost of an iv will in general not be zero. It will be
exceptional that the iv register happens to be initialized with the
proper value at no cost. In general, there will at the very least be a
regcopy or a const set.
OK. Please add a comment
Hello world,
the attached patch does the following:
- It removes the restriction on functions returning allocatables
for elimination (unnecessary since the introduction of allocatable
temporary variables)
- It allows character function elimination if the character length is
a constant
On 05/11/2011 08:26 AM, Jakub Jelinek wrote:
This patch duplicates parts of the gimplifier's work during genericization,
That seems unfortunate, but I'll accept your judgment that it's the
least-bad solution. The patch is OK.
Jason
Hi,
+ sa_cost = (TREE_CODE (expr) != MINUS_EXPR
+ ? shiftadd_cost[speed][mode][m]
+ : (mult == op1
+? shiftsub1_cost[speed][mode][m]
+: shiftsub0_cost[speed][mode][m]));
+ res = new_cost (sa_cost, 0);
+ res = add_costs (res, mult
On Wed, May 18, 2011 at 10:37 PM, H.J. Lu hongjiu...@intel.com wrote:
This patch properly handles 256bit load cast. OK for trunk if there
is no regression? I will also prepare a patch for 4.6 branch.
2011-05-18 H.J. Lu hongjiu...@intel.com
PR target/49002
*
It seems like you're calculating maxbits correctly now, but an access
doesn't necessarily start from the beginning of the sequence of
bit-fields, especially given store_split_bit_field. That is,
struct A
{
int i;
int j: 32;
int k: 8;
char c[2];
};
Here maxbits would be 40, so we
Hello,
The calculation of the number of instructions in a row is currently
done by updating row_rest_count field in struct ps_insn on the fly
while creating a new instruction. It is used to make sure we do not
exceed
the issue_rate.
This calculation assumes the instruction is inserted in the
Hello,
The attached patch moves the creation of anti-dep edge from a
branch to it's def from create_ddg_dep_from_intra_loop_link () to
add_cross_iteration_register_deps () due to the fact the edge is with
distance 1 and thus should be in the later function.
The edge was added to avoid creating
Hello,
The attach patch tries to achieve optimised SC by normalizing the partial
schedule (having the cycles start from cycle zero). The branch location
must be placed in row ii-1 in the final scheduling. If that's not the
case after the normalization then it tries to move the branch to that
row
Hello,
The attached patch contains misc. fixes and changes.
The patch was tested together with the rest of the patches in this series.
On ppc64-redhat-linux regtest as well as bootstrap with SMS flags
enabling SMS also on loops with stage count 1. Regtested on SPU.
On arm-linux-gnueabi
On Wed, 18 May 2011 21:04:39 +0200
Pierre Vittet pier...@pvittet.com wrote:
Hello,
I have written a patch to allow the use of the GCC dominance functions
into MELT.
[...]
Changelog:
2011-05-17 Pierre Vittet pier...@pvittet.com
* melt/xtramelt-ana-base.melt
73 matches
Mail list logo