Hi,
On Wed, Jun 18, 2014 at 06:12:34PM +0200, Bernhard Reutner-Fischer wrote:
On 18 June 2014 10:24:16 Martin Jambor mjam...@suse.cz wrote:
@@ -3002,10 +3014,8 @@ try_make_edge_direct_virtual_call (struct
cgraph_edge *ie,
if (target)
{
-#ifdef ENABLE_CHECKING
-
On 06/19/2014 09:06 AM, Tom de Vries wrote:
2014-06-19 Tom de Vries t...@codesourcery.com
* final.c (collect_fn_hard_reg_usage): Don't save function_used_regs if
it contains all call_used_regs.
Ok.
When we now have way to represent different reg usages for functions,
Ping.
Thanks,
Martin
On Sat, May 31, 2014 at 12:46:03AM +0200, Martin Jambor wrote:
Hi,
after a clone is materialized, its clone_of field is cleared which in
PR 61211 leads to a failure in the skipped_thunk path in clone_of_p in
cgraph.c, which then leads to a false positive
Hi,
this patch moves init and fini priorities to symbol table instead of trees.
They are already in on-side hashtables, but the hashtables are now maintaned
by symbol table. This is needed for correctness with LTO.
Currently tree merging may load declaration with priority and then ggc_free
it
Hi,
IRA initialization shows high in profiles even when building lto objects. This
patch simply
delays RTL backend initialization until we really decide to output a function.
In some cases
this avoids the initialization completely (like in the case of LTO but also
user target attributes)
and
Hello,
after some lengthly investigation it turned out that aliases on AIX doesn't
behave in the way we expect. In particular creating a static alias of a global
symbol has no effect. This is somewhat special behaviour of AIX's .set
pseudo-op I think I can get this fixed by simply emitting
+ /* Depending on linker choice, this one may bind locally
+ or to the other unit. */
+ if (!testcount !test2count)
+abort();
+ tt();
+
+ if ((testcount != 1 || test2count != 3)
+ (testcount != 3 || test2count != 1))
+abort ();
+ reutrn 0;
The new testcases also declare main() as void, but return 0.
I fixed that with previous commit too (what happened is that I managed to
copy wrong version of the files while testing that they fail on AIX.
They indeed did fail, but for wrong versoin)
Honza
On Fri, 13 Jun 2014, Jan Hubicka wrote:
When you extract the address and use it. For example when you
do auto-parallelization and outline a part of your function it
passes arrays as addresses.
Or if you start to introduce address induction variables like
Hi,
this is patch to add the used_by_single_function flag to varpool. In full
generality
it is a simple dataflow problem, since the variable may be referred by other
variables
as long as all of them are used by one function only. I have
bootstrapped/regtested it
on x86_64-linux and
Jan Hubicka hubi...@ucw.cz writes:
this patch moves init and fini priorities to symbol table instead of trees.
They are already in on-side hashtables, but the hashtables are now maintaned
by symbol table. This is needed for correctness with LTO.
This breaks gcc.dg/initpri3.c
I don't like this very much. It's fragile and it will be very hard to
detect bugs caused by it.
Please don't spread uses of the DECL_NONALIASED hack.
If we are only concerned about LTO I'd rather have a in_lto_p check
in may_be_aliased and trust TREE_ADDRESSABLE there.
I do not like it
On June 23, 2014 6:15:10 PM CEST, Jan Hubicka hubi...@ucw.cz wrote:
I don't like this very much. It's fragile and it will be very hard
to
detect bugs caused by it.
Please don't spread uses of the DECL_NONALIASED hack.
If we are only concerned about LTO I'd rather have a in_lto_p
The tests gcc.dg/globalalias-2.c and gcc.dg/localalias-2.c fail on darwin with
/opt/gcc/work/gcc/testsuite/gcc.dg/globalalias-2.c:20:2: warning: alias
definitions not supported in Mach-O; ignored
I think they should be protected by
/* { dg-require-alias } */
I see, the anoying
On Mon, 23 Jun 2014, James Greenhalgh wrote:
Hi,
pr61510 is a case where cgraphunit.c::analyze_functions can end up
dereferencing a NULL pointer. This is, to me, the obvious way to avoid
dereferencing NULL.
However, I'm not very confident that this isn't just masking some
Hi,
this patch makes DECL_VINDEX and DECL_SAVED_TREE to be FUNCTION_DECL only.
This needs to resolve overloading in C++ FE. For namespaces I added new fields
in lang specific annotation and for TEMPLATE_DECL I moved the overload to
UNIT_SIZE that is currently unused.
My incremental plan is to
1)
Hello,
fold-const contains quite few confused statements that deal with WEAK
visibility and aliases:
static int
simple_operand_p (const_tree exp)
{
/* Strip any conversions that don't change the machine mode. */
STRIP_NOPS (exp);
return (CONSTANT_CLASS_P (exp)
|| TREE_CODE
On 06/23/2014 04:25 PM, Jan Hubicka wrote:
* class.c (check_methods, create_vtable_ptr, determine_key_method,
add_vcall_offset_vtbl_entries_1): Guard VINDEX checks by FUNCTION_DECL
check.
These changes are unnecessary: TYPE_METHODS is a list of functions.
I just double checked
Hello,
this patch changes IPA REF API to c++ style. Changes were suggested and
consulted with Honza.
Patch has been pre approved, will be committed if no comments.
Bootstrapped on x86_64-pc-linux-gnu, no regressions.
Thanks,
Martin
ChangeLog:
2014-06-22 Martin Liska
On 06/20/2014 12:52 PM, tsaund...@mozilla.com wrote:
From: Trevor Saunders tsaund...@mozilla.com
Hi,
This patch adds a hash_map class so we can consolidate the boiler plate
around
using hash_table as a map, it also allows us to get rid of pointer_map which
I
do in this patch by
The problem is that the patch fails testcases that assume we do such
folding at parsing
time.
./testsuite/gcc/gcc.sum:FAIL: gcc.dg/pr36901-1.c (test for excess errors)
./testsuite/gcc/gcc.sum:FAIL: gcc.dg/pr36901-2.c (test for excess errors)
./testsuite/gcc/gcc.sum:FAIL:
In preparation to fix the alias issues on AIX, this patch changes
ASM_DECLARE_FUNCTION_NAME from a macro to a function.
Thanks, David!
We will also need to introduce ASM_DECLARE_OBJECT_NAME to handle the aliases
of variables. I can look into that probably later this week (it is last week
of
On 06/24/2014 02:18 PM, Jan Hubicka wrote:
On 06/23/2014 04:25 PM, Jan Hubicka wrote:
* class.c (check_methods, create_vtable_ptr, determine_key_method,
add_vcall_offset_vtbl_entries_1): Guard VINDEX checks by FUNCTION_DECL
check.
These changes are unnecessary: TYPE_METHODS
Hi!
I've been away for holidays and other stuff, so this is a bit late,
but nevermind... The stringification of DECL_SECTION_NAME had some
fallout, see eg.
http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=272454
g++ -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE
Hi!
Fallout for frv, see eg.
http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=272377
g++ -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -fno-exceptions
-fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual
-Wmissing-format-attribute
Hi,
this patch moves DECL_ARGUMENTS into FUNCTION_DECL. For this I needed to solve
reuse in C++ and objC frontends. In C++ I think I actually run out of places
to use for TEMPLATE_DECL (well, perhaps DECL_ATTRIBUTES but I would definitely
run out of pointers fro DECL_RESULT I want to move next)
On 06/20/14 01:51, Jan Hubicka wrote:
Hi,
IRA initialization shows high in profiles even when building lto objects.
This patch simply
delays RTL backend initialization until we really decide to output a
function. In some cases
this avoids the initialization completely (like in the case
Hi,
the patch below fixes the (I guess now almost infamous) typo that
prints Type inconsident devirtualization to the dump. This dumping
has been copied and pasted to a few places so I made all of them just
use the ipa_impossible_devirt_target function to do that. The code
can be
On Tue, Jun 24, 2014 at 2:53 PM, Jan Hubicka hubi...@ucw.cz wrote:
We will also need to introduce ASM_DECLARE_OBJECT_NAME to handle the
aliases
of variables. I can look into that probably later this week (it is last
week
of my teaching and I need to do the finals)
varasm.c
Jeff,
thanks for review! I did some passes over the patch before it got to the ML, I
am
happy to have independent opinion.
+@item -fipa-icf
+@opindex fipa-icf
+Perform Identical Code Folding for functions and read-only variables.
+Behavior is similar to Gold Linker ICF optimization. Symbols
Hi,
the most common types of tree nodes streamed are declarations (5.4M for
Firefox) and types (4.2M for Firefox). This patch makes representation of
types smaller by avoiding saving redundent info about type and its variants.
About 50% of types are variants and overall this saves about 6% of WPA
On 06/25/14 21:38, Kito Cheng wrote:
For example in arm-elf-eabi, movmem need word align, otherwise it will
expand a libcall:
And gcc configure with --target=arm-elf-eabi --disable-nls
--disable-shared --enable-languages=c,c++ --enable-threads=single
--enable-lto --with-newlib
test.c:
Hi,
this patch enhances alias manipulation for symtab_node. Honza suggested
following changes.
Patch is pre approved, will be committed if no comments and regressions.
Bootstrapped on x86_64-pc-linux-gnu, regression tests have been running.
Thanks,
Martin
gcc/ChangeLog:
*
Hi,
This is first bug noticed by the type consistency checks I added.
gcov_info_type is a structure that contains function pointer to itself. While
building it we first build a structure w/o size and fields, then we build a
function type that produces a qualified variant of the structure (not
Hi,
this is another bug noticed. Here ipa-devirt attempts to merge binfos of two
representations
of the same ODR type, but forgets about variants.
I also noticed that using variant instead of the type may end up in incomplete
type and/or
we may waste polymorphic call target cache by duplicated
Hi,
this patch does similar change to ipa-prop as I did to ipa-devirt; it makes
sure that
all the types in jump functions are main variants that reduces diversity in LTO
streaming
and makes us less likely to hit incomplete types.
It also makes sure that the type change detection works on main
Hi,
this patch fixes similar bug as in ipa-devirt. objc_xref_basetypes is used when
building obj-C++ structure. The structure always contains self-reference that
builds type variant early. The variant's binfo is one assigned by
C++ FE's version of xref_basetypes, while the main variant gets
Jason,
this is another case cought by the type variant checking.
build_ptrmemfunc_type,
for qualified type, first calls itself recursively to produce member pointer
type
for unqalified variant.
Subsequentely it produces the member pointer from scratch - I believe it is
because
the field decl
Minor comments below, ok with those changes.
Thanks!
This is version of patch I commited after additional testing on building of
some bigger apps with LTO. The main change (in addition to those requested) is
that I moved the fixups into lto_copy_fields_not_streamed and added loop before
SCC
In addition of pr61644 and pr61646, this commit breaks a lot of
fortran tests with -flto -O0.
Hello,
the problem here is that we have POINTER_TYPE that points to array of variable
length (not sure why it happens only with -O0). The ICE is introduced by the
fact that we stream the type inside of
gang.chen.5...@gmail.com
Jan Hubicka hubi...@ucw.cz
* c-decl.c (duplicate_decls): CLear DECL_STRUCT_FUNCTION before
releasing
symbol.
* gcc.c-torture/compile/section.c: New testcase
Index: testsuite/gcc.c-torture/compile/section.c
Please revert the original patch instead which was not tested properly. I'll
get back to this after I return from vacation.
OK, I will bootstrap and revert tomorrow morning.
Note that testusite passes with the patch; the problem appears only at -O0
-flto and fortran
that we apparently do
On 06/30/2014 08:42 AM, Jason Merrill wrote:
Hmm, I wonder why we need BINFOs at all for the ptrmemfunc RECORD_TYPEs,
which are not classes.
I'm working on removing both BINFO and TYPE_LANG_SPECIFIC.
Works for me! :)
Thanks,
Honza
On June 29, 2014 9:53:03 PM CEST, Jan Hubicka hubi...@ucw.cz wrote:
In addition of pr61644 and pr61646, this commit breaks a lot of
fortran tests with -flto -O0.
Hello,
the problem here is that we have POINTER_TYPE that points to array of
variable
length (not sure why it happens only
gcc/ChangeLog:
* cgraph.h (iterate_direct_aliases): New function.
(FOR_EACH_ALIAS): New macro iterates all direct aliases for a node.
* cgraph.c (cgraph_for_node_thunks_and_aliases): Usage of
FOR_EACH_ALIAS added.
(cgraph_for_node_and_aliases): Likewise.
*
Jason,
I made a verifier that types not considered anonymous are not built
from types that are anonymous and that public types have TREE_PUBLIC
flag on their TYPE_DECLS (as that seem to be what tree.h says).
This catches two cases in C++ FE and several other cases elsewhere.
Does something like
Jason,
this is non-C++ specific part where I needed updating. The i386.c change will
need to be propagated into other backends. I also wonder if I should copy
PUBLIC flag from component type in complex numbers - can we produce complex
number from anonymous type?
Finally
On 06/30/2014 03:27 PM, Jan Hubicka wrote:
This catches two cases in C++ FE and several other cases elsewhere.
Does something like this make sense? I think bulitin_types are
generally public, but I am not quite sure about templates.
Template parms have no linkage, but they certainly don't
Hi,
this is a preparation patch for the ODR type work. It removes odr comparsion
code from tree.c that never worked (because it misses names of template
parameters) and is for quite a while replaced by compared assembler names of
virtual tables of polymorphic types. I plan to extend this trick
Hi,
this patch adds predicate contains_polymorphic_type_p. This can be used
in the ICF pass - if one of the types is contains_polymorphic_type_p,
then TYPE_MAIN_VARIANTs of both types should be the same, at least for
now. Of course it would be possible to compare types for equality and then
also
Hi,
this patch adds structural comparsion into ODR warnings, so we do not rely
on types_compatible_p to checks if the individual variants of same
name looks same. This allows us to give more precise reason for the
mismatch and also be more strict than canonical type merging.
Function
On Jul 2, 2014, at 10:52 AM, Nathan Froyd froy...@mozilla.com wrote:
- Original Message -
/aux/hubicka/firefox/netwerk/sctp/datachannel/DataChannel.h:64:0: warning:
field ‘mSpa’ (of type ‘struct BufferedMsg’) violates one definition rule
[-Wodr]
Can we reword this warning?
I can't find the code for the SampleFormat thing, but the rest of them
look like ODR violations to me.
I think it is some define renaming the field, I was also puzled by this one.
/aux/hubicka/firefox/netwerk/sctp/datachannel/DataChannel.h:64:0: warning:
field ‘mSpa’ (of type ‘struct
Hi,
this patch strengthens detect_type_change and makes it cheaper based on the
following observation.
We propagate types from places we know instances are created across pointers
passed to functions. Once non-POD type is created at a given memory location,
one can not change its type by
On 07/02/2014 01:18 PM, Jan Hubicka wrote:
We propagate types from places we know instances are created across pointers
passed to functions. Once non-POD type is created at a given memory
location,
one can not change its type by placement_new into something else.
Hmm. If the memory
On 07/02/2014 01:18 PM, Jan Hubicka wrote:
We propagate types from places we know instances are created across
pointers
passed to functions. Once non-POD type is created at a given memory
location,
one can not change its type by placement_new into something else.
Hmm
On 07/02/2014 06:30 PM, Jan Hubicka wrote:
But this is one of things that was not quite clear to me. I know that
polymorphic type A
was created at a give memory location. THis means that accesses to that
location in one
alias class has been made.
Now I destroy A and turn it into B
Hi,
BLOCK_SUPERCONTEXT for normal blocks leads all the way to FUNCTOIN_DECL. This
is not the case of some
automatically generated functions, like one for cilk. I think it is bug. This
patch fixes cilk, I will
look for other cases if that looks OK.
Bootstrapped/regtested x86_64-linux
Honza
On 07/02/2014 01:18 PM, Jan Hubicka wrote:
We propagate types from places we know instances are created across pointers
passed to functions. Once non-POD type is created at a given memory
location,
one can not change its type by placement_new into something else.
Hmm. If the memory
On Fri, 20 Jun 2014, Trevor Saunders wrote:
+@item -fipa-icf
+@opindex fipa-icf
+Perform Identical Code Folding for functions and read-only variables.
I would perhaps explicitly say that the optimizations reduce code size
and may disturb unwind stacks by replacing a function by equivalent
On Sun, Jun 29, 2014 at 12:44 AM, Jan Hubicka hubi...@ucw.cz wrote:
Hi,
this patch fixes another problem where we manage to produce a variant of
variadic array that has different TYPE_SIZE (but an equivalent expression).
This happens because remap_type_1 blindly copies all expressions
Btw - this points to the obvious opportunity to make variant types
a lot smaller (with the caveat to require an indirection to the main
variant to access shared bits). That would also automagically
help LTO streaming
Yeah, I was playing with this idea. Lets get things checked and
Hello,
I apologize for taking so long to get into this patch. I ad busy time (wedding
and teaching), should be back in regular schedule now.
Sri, can you provide examples to show why putting thunks into the same
section as the target function when function reorder is on can be bad
?
C++ ABI
Hi,
enabling local aliases on AIX causes few ICEs. This is because localias
function looks
for existing alias. C++ FE produces those for thunk code but doesn't make them
correctly,
so we end up with missing DECL_CONTEXT that later confuses ipa-devirt.
This patch adds sanity checking of the alias
Hi,
AIX as' .set pseudoop has somewhat unexpected behaviour. It seems to be
implemented by syntactically replacin all appereances of the alias by
its target (that can be an expressoin) but it is still possible to globalize
the alias by .globl operation.
This breaks the assumption we make about
On 07/04/14 03:05, Jan Hubicka wrote:
Hi,
BLOCK_SUPERCONTEXT for normal blocks leads all the way to FUNCTOIN_DECL.
This is not the case of some
automatically generated functions, like one for cilk. I think it is bug.
This patch fixes cilk, I will
look for other cases if that looks OK
Hi,
I have attached a patch for this bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61599. Is this alright?
Thanks
Sri
Patch to fix PR 61599:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61599
Function int_size_in_bytes returns -1 in as the size in cases where
the size of
Index: stor-layout.c
===
--- stor-layout.c (revision 212098)
+++ stor-layout.c (working copy)
@@ -2065,7 +2065,7 @@ void
finish_builtin_struct (tree type, const char *name, tree fields,
Hi,
I had to revert change to ipa-prop.c that made stmt_may_be_vtbl_ptr_store
to know that clobbers can not be such stores.
This triggered byg in detect_type_change_from_memory_writes. This function does
two things. First is that it tries to prove that vtbl pointer was not modified
in the
We have reverted the patch for now but I note that at least the piece
below is a step backward from doing the compare in the on-disk
format.
Why it is step backward from compare in the on-dist format? All the information
is still streamed, just not duplicated. Since we explicitly stream
On 07/02/2014 01:18 PM, Jan Hubicka wrote:
We propagate types from places we know instances are created across pointers
passed to functions. Once non-POD type is created at a given memory
location,
one can not change its type by placement_new into something else.
Hmm. If the memory
So the issue seems to be:
gcov_info_type = lang_hooks.types.make_type (RECORD_TYPE);
gcov_fn_info_type = lang_hooks.types.make_type (RECORD_TYPE);
gcov_fn_info_ptr_type = build_pointer_type
(build_qualified_type (gcov_fn_info_type, TYPE_QUAL_CONST));
build_fn_info_type
You probably can't. But check what the C frontend ends up producing with
Struct x { const struct x *p; };
Doesn't it use an incomplete copy during the definition of x?
I was poking around this last week with the type identification. C frontend
seems
always make the type complete by
The problem with devirt-10 and devirt-15 is the excellent kludge for
aliases on AIX can produce multiple symbols.
ipa-prop: Discovered a virtual call to a known target (void
wxBufferedDC::InitCommon(wxDCBase*)/3 - virtual void
With the patch, GCC on AIX now responds that ifunc is supported.
The C and C++ attr-ifunc testcases now run and fail.
This is unexpected. I am testing version of the patch with
if (lookup_attribute (ifunc, DECL_ATTRIBUTES (n-decl)))
return false;
added to beggining of
Hello,
perhaps I could write bit more on my longer term plans. At the moment 30% of
firefox WPA is taken
by straming trees and another roughly 30% is taken by inliner. It is bit
anoying but relatively
easy to optimize inliner, but trees represent bigger problem.
According to the stats average
Richard,
That is, have a tree_may_be_mergeable_p (), call it during the DFS
walk storing it alongside the visited edges and thus obtain a result
for each SCC, stream that as a flag (a special hash value is ugly,
but well ... I guess it works). The important part is to make an SCC
This part can probably be speed up quite a bit by doing the SCC unification
before materializing the SCC, that is, doing the on-disk format compare
idea.
The issue here is that for bigger SCCs that have hash collisions in their
entries we need to do the edge walk - but eventually having two
Are we sure it ever stabilizes? But yes, I had something like this in mind
(just do one iteration always) in case we need to improve hashing.
Not necesarily - imagine two identical type variants, no matter how hard we
hashrehash, they will be same as they are identical. We can just keep
-07-08 Jan Hubicka hubi...@ucw.cz
+
+ * rs6000/rs6000-protos.h (rs6000_xcoff_declare_object_name): Declare.
+ * rs6000/rs6000.c: Inline output of .set instruction.
+ (declare_alias_data): New struct.
+ (rs6000_declare_alias): New function
(working copy)
@@ -1,5 +1,10 @@
2014-07-08 Jan Hubicka hubi...@ucw.cz
+ * ipa-visibility.c (function_and_variable_visibility): Remove
+ temporary hack disabling local aliases on AIX.
+
+2014-07-08 Jan Hubicka hubi...@ucw.cz
+
* ipa-cp.c (devirtualization_time_bonus): Walk
Hi,
this patch fixes the devirt10 and devirt15 failures - the problem was that we
did not look into alias target
when estimating devirt benefit.
Bootstrapped/regtested rs6000-aix, comitted.
* ipa-cp.c (devirtualization_time_bonus): Walk through aliases.
* ipa-inline-analysis.c
Hi,
actually I forgot one hunk in the tree. This time it makes speculative
devirtualuzation
to consider node and its alias to be equivalent.
This happens in ipa-devirt10 becuase one of targets appears in symbol table and
thus is redirected
to alias while the second doesn't.
*
I'm seeing ICEs: »tree check: expected function_decl, have type_decl in
fold_checksum_tree, at fold-const.c:14861«. Is the following the correct
fix, or should this be done differently?
No, it seems fine to me. I added it to my local patch, thanks!
Honza
--- gcc/fold-const.c
+++
Are we sure it ever stabilizes? But yes, I had something like this in mind
(just do one iteration always) in case we need to improve hashing.
Hi,
this is bit quick experiment with strengthening the hash by iteration. I don't
seem to be able to measure WPA time difference for the patch though
Hi,
since we both agreed offlining constructors from global decl stream is a good
idea, I went ahead and implemented it. I would like to followup by an
cleanups; for example the sections are still tagged as function sections, but I
would like to do it incrementally. There is quite some uglyness
Well - as we re-use the streamer cache to store the hash value it isn't
really possible to do better ... (at least I don't have a clever idea)
OK, no cleverness on my side either.
Yeah (though you wouldn't need the extra hashing - we only need to know
the hash of the SCC). The current
Hi,
this first patch continues with rafactoring of IPA infrastructure so that
we will have C++ API. In the patch, I transformed many global functions to
members of symtab_node and cgraph_node.
Example:
cgraph_remove_node (struct cgraph_node *node) - cgraph_node::remove (void)
We hash only on outgoing SCC edges. You can easily have
main variant type T and variants T1,T2 that are same all used by type
T again.
Ok, but then the two variants shouldn't be in the same SCC or at
least not in the same SCC as the main variant.
They will because T refers them
On Fri, 11 Jul 2014, Jan Hubicka wrote:
Hi,
since we both agreed offlining constructors from global decl stream is a
good
idea, I went ahead and implemented it. I would like to followup by an
cleanups; for example the sections are still tagged as function sections,
but I
would
Hmm, walking everything first and then starting streaming sounds bad idea
for locality. Can't I just re-do the walk since I know what the SCC is?
I will read the code more after lunch.
Might be possible with a 2nd SCC stack set up, yes.
I set up hash_map to store the hash values anyway.
On Fri, 11 Jul 2014, Jan Hubicka wrote:
Hmm, walking everything first and then starting streaming sounds bad
idea
for locality. Can't I just re-do the walk since I know what the SCC is?
I will read the code more after lunch.
Might be possible with a 2nd SCC stack set up
Well, just make them regular (anonymous) VAR_DECLs then ... (the fact
that a CONST_DECL is anonymous is probably the only real difference -
and that they are mergeable by content).
Something like that, perhaps. Plan to do that incrementally - having them in
symbol tabel first is an
Ah, ok. Well, let's hope walk_tree walks all edges the DFS walk walks ;)
A quick look tells me it doesn't walk DECL_VINDEX or
DECL_FUNCTION_PERSONALITY for example.
I guess it should - will try patch adding that :) Both seems like just
ommisions - these fileds were added quite recently
I noticed that we set node-definition = true in
varpool_assemble_decl. The surrounding code suggests that we should
only ever get there if definition is already true, so I changed it
to an assert. The question is interesting for some modifications I'm
making for ptx (which requires
Sorry. This code meant to work with the different mkdir api in
windows. I used wrong ifdef.
Here is the patch. OK for checkin?
OK. I also see the following with LTO bootstrap:
../../gcc/../libgcc/libgcov-util.c:41:24: error: type of �gcov_max_filename�
does not match original declaration
Hi,
Firefox build ICEs in ipa-devirt (types_same_for_odr) not being able
to establish ODR equivalency for non-polymorphic types. This is because
ipa-prop and ipa-cp does call get_binfo_at_offset where it really wants
to propagate on types and offsets. Before this is fixed this patch avoids
the
Hi,
this is the variant of patch I comitted. I noticed that partitioning actually
calls ctor_for_folding just to figure out if the constant value may be used
that drags in every readonly variable ctor into memory at WPA.
So now we have separate predicate varpool_ctor_useable_for_folding_p to check
Hi
this is patch i am going to commit after testing. It removes DECL_INIT_IO
timevar that guards only one variable set (so hardly measure anything) and
moves GIMPLE_IN to proper place. It also adds CTORS_IN and CTORS_OUT.
I get:
ipa lto gimple out : 0.37 ( 0%) usr 0.21 ( 3%) sys 0.64
Richard,
I looked at my patch again. I already add -Wno-error to libgcov-util.o
compilation:
In line 200 of gcc/Makefile.in
libgcov-util.o-warn = -Wno-error
In my test, I used gcc-4.6 as the host compiler. I got warning like this:
In file included from
1 - 100 of 5049 matches
Mail list logo