Re: Hash table iterators.

2012-11-23 Thread Michael Matz
Hi, On Thu, 22 Nov 2012, Lawrence Crowl wrote: I have found that tree-flow.h implements iteration over htab_t, while there is no current facility to do that with hash_table. Unfortunately, the specific form does not match the standard C++ approach to iterators. We have several choices.

Re: Unifying the GCC Debugging Interface

2012-11-21 Thread Michael Matz
Hi, On Tue, 20 Nov 2012, Lawrence Crowl wrote: On 11/19/12, Diego Novillo dnovi...@google.com wrote: On Nov 19, 2012 Michael Matz m...@suse.de wrote: So, yes, the larger layouting should be determined by name of the dump function. A flag argument might look nice from an interface

Re: rfc NOP vs CONVERT (was: Simplifying Gimple Generation)

2012-11-21 Thread Michael Matz
Hi, On Tue, 20 Nov 2012, Martin Jambor wrote: +++ gcc/ipa-cp.c2009-09-29 15:29:05.0 +0200 @@ -298,7 +298,7 @@ ipcp_lattice_from_jfunc (struct ipa_node return; cst = caller_lat-constant; - if (jfunc-value.pass_through.operation != NOP_EXPR) + if (!

Re: Unused DSE Functions

2012-11-20 Thread Michael Matz
Hi, On Tue, 20 Nov 2012, Steven Bosscher wrote: On Mon, 19 Nov 2012 18:31:27 -0800, Lawrence Crowl wrote: Richi, ping? Just guessing... isn't he simply out on Honeymoon? Yes, he'll be back next week. Ciao, Michael.

Re: Unifying the GCC Debugging Interface

2012-11-19 Thread Michael Matz
Hi, On Mon, 19 Nov 2012, Martin Jambor wrote: Well, this is what I was actually afraid of. If things like generic or tree dump of a tree value is selected by new TDF_ flags, then you are in danger of just replacing current mess in function names by a mess of constants. I'd much rather have

Re: Unused Field in graphite-poly.h?

2012-11-19 Thread Michael Matz
Hi, On Fri, 16 Nov 2012, Lawrence Crowl wrote: I think the field htab_t original_pddrs in struct scop in graphite-poly.h is unused. Seems I overlooked it during my post-isl cleanups. Yes, remove it. Ciao, Michael.

rfc NOP vs CONVERT (was: Simplifying Gimple Generation)

2012-11-19 Thread Michael Matz
Hi, On Fri, 16 Nov 2012, Andrew Pinski wrote: Ah, yes. This one was amusing. When we were drafting the proposal, Lawrence kept wondering what this NOP_EXPR thing is. I've been suffering this name for so long, that it no longer irritates me. Had it been named CAST_EXPR, or even

Re: rfc NOP vs CONVERT (was: Simplifying Gimple Generation)

2012-11-19 Thread Michael Matz
Hi, On Mon, 19 Nov 2012, Steven Bosscher wrote: On Mon, Nov 19, 2012 at 2:10 PM, Michael Matz wrote: Hi, On Fri, 16 Nov 2012, Andrew Pinski wrote: Ah, yes. This one was amusing. When we were drafting the proposal, Lawrence kept wondering what this NOP_EXPR thing is. I've been

Re: Simplifying Gimple Generation

2012-11-16 Thread Michael Matz
Hi, On Thu, 15 Nov 2012, Lawrence Crowl wrote: They allow us to use the same name for the same actions in two different contexts. In particular, distinguishing between statement construction in SSA and non-SSA. I don't see the difference, and I don't see where you need context data to

Re: Simplifying Gimple Generation

2012-11-16 Thread Michael Matz
Hi, On Fri, 16 Nov 2012, Diego Novillo wrote: I think consistency should trump brevity here, so also add a tree code for the converter, i.e. ssa_stmt b = q.stmt (NOP_EXPR, shadow_type, a); Ah, yes. This one was amusing. When we were drafting the proposal, Lawrence kept wondering

Re: Simplifying Gimple Generation

2012-11-15 Thread Michael Matz
Hi Lawrence, On Wed, 14 Nov 2012, Lawrence Crowl wrote: Diego and I seek your comments on the following (loose) proposal. In principle I agree with the goal, I'm not sure I like the specific way yet, and even if I do I have some suggestions: We will add a set of helper classes to be used as

Re: Simplifying Gimple Generation

2012-11-15 Thread Michael Matz
Hi, On Thu, 15 Nov 2012, Gabriel Dos Reis wrote: On Thu, Nov 15, 2012 at 8:48 AM, Michael Matz m...@suse.de wrote: [...] The method name should imply the action, e.g. 'add_stmt' or append_stmt or the like. strongly agreed. [...] All in all I think we can severely improve

Re: [PATCH] Disable libsanitizer if C++ is not being built

2012-11-15 Thread Michael Matz
Hi, On Thu, 15 Nov 2012, Steven Bosscher wrote: Current HEAD fails build when --enable-languages=c, i.e. C++ is not being built. Attached patch fixes this. Eh??? Uhh??? Isn't C++ always built, because gcc itself requires it? Without bootstrapping it doesn't, no. Ciao, Michael.

Re: lto is streamable?

2012-11-14 Thread Michael Matz
Hi, On Wed, 14 Nov 2012, Paulo Matos wrote: There's a function in lto-streamer-out.c which determines if a tree is streamable. This is lto_is_streamable? I have a LANG_TYPE that I want to stream and adding to that function: #ifdef TARGET_MYPORT if (code == LANG_TYPE) return true;

Re: [PATCH] Fix debug info for expr and jump stmt

2012-10-30 Thread Michael Matz
Hi, On Tue, 30 Oct 2012, Richard Biener wrote: On Tue, Oct 30, 2012 at 3:17 PM, Dehao Chen de...@google.com wrote: And tree expressions don't have TREE_BLOCK before gimple-low either. So IMNSHO it is gimple-low.c that should set TREE_BLOCK of all the gimple stmts as well as all expression

Re: Build/Makefile question

2012-10-29 Thread Michael Matz
Hi, On Sat, 27 Oct 2012, Ian Lance Taylor wrote: On Sat, Oct 27, 2012 at 1:45 PM, Caroline Tice cmt...@google.com wrote: Ian Tayler (in private communication) asked that I get the part of the build log that shows the .so and .a files being built and send it to the list. Here it is. I

Re: [PATCH] Fix debug info for expr and jump stmt

2012-10-29 Thread Michael Matz
Hi, On Fri, 26 Oct 2012, Dehao Chen wrote: 1. abandon the changes in cfgexpand.c Well, you merely moved the bogus code to gimple-low.c. It is bogus because you unconditionally overwrite TREE_BLOCK of all operands (and all operands operands) with the statements block. I assume the unit-test

Re: [PATCH] Fix debug info for expr and jump stmt

2012-10-29 Thread Michael Matz
Hi, On Mon, 29 Oct 2012, Richard Biener wrote: Well, you merely moved the bogus code to gimple-low.c. It is bogus because you unconditionally overwrite TREE_BLOCK of all operands (and all operands operands) with the statements block. I assume the unit-test you added shows the problem

Re: [PATCH] Fix debug info for expr and jump stmt

2012-10-29 Thread Michael Matz
Hi, On Mon, 29 Oct 2012, Dehao Chen wrote: On Mon, Oct 29, 2012 at 7:17 AM, Michael Matz m...@suse.de wrote: Hi, On Mon, 29 Oct 2012, Richard Biener wrote: Well, you merely moved the bogus code to gimple-low.c. It is bogus because you unconditionally overwrite TREE_BLOCK of all

Re: [PATCH] Fix debug info for expr and jump stmt

2012-10-26 Thread Michael Matz
Hi, On Thu, 25 Oct 2012, Dehao Chen wrote: * cfgexpand.c (set_expr_location_r): New callback function. (gimple_assign_rhs_to_tree): Walk the expr recursively. (expand_call_stmt): Likewise. (expand_gimple_stmt_1): Likewise. This cannot be right. You're going to propagate a toplevel

Re: [PATCH] Fix PR55011

2012-10-23 Thread Michael Matz
Hi, On Tue, 23 Oct 2012, Richard Biener wrote: ... for this. We should never produce UNDEFINED when the input wasn't UNDEFINED already. Why? Because doing so _always_ means an invalid lattice transition. UNDEFINED is TOP, anything not UNDEFINED is not TOP. So

Re: [PATCH] Fix PR55011

2012-10-23 Thread Michael Matz
Hi, On Tue, 23 Oct 2012, Richard Biener wrote: So, one question, are you claiming that a VRP worker like this: VR derive_new_range_from_operation (VR a, VR b) is _ever_ allowed to return UNDEFINED when a or b is something else than UNDEFINED? You seem to claim so AFAIU, but at

Remove def operands cache, try 2

2012-10-22 Thread Michael Matz
Hi, On Tue, 11 Sep 2012, Michael Matz wrote: the operands cache is ugly. This patch removes it at least for the def operands, saving three pointers for roughly each normal statement (the pointer in gsbase, and two pointers from def_optype_d). This is relatively easy to do, because all

Re: [PATCH] Fix PR55011

2012-10-22 Thread Michael Matz
Hi, On Mon, 22 Oct 2012, Richard Biener wrote: This fixes PR55011, it seems nothing checks for invalid lattice transitions in VRP, That makes sense, because the individual parts of VRP that produce new ranges are supposed to not generate invalid transitions. So if anything such checking

Re: [PATCH] Fix PR55011

2012-10-22 Thread Michael Matz
Hi, On Mon, 22 Oct 2012, Richard Biener wrote: On Mon, 22 Oct 2012, Michael Matz wrote: Hi, On Mon, 22 Oct 2012, Richard Biener wrote: This fixes PR55011, it seems nothing checks for invalid lattice transitions in VRP, That makes sense, because the individual parts

Re: Normalizing the bitmap APIs.

2012-10-15 Thread Michael Matz
Hi, On Sat, 13 Oct 2012, Lawrence Crowl wrote: I have no problem in always returning a status change, if you are OK with that. I am ok with that. There is some rationale for being concerned about performance, as the checking routines need to read memory locations that they

Re: Merge C++ conversion into trunk (4/6 - hash table rewrite)

2012-09-28 Thread Michael Matz
Hi, On Thu, 27 Sep 2012, Lawrence Crowl wrote: template typename T struct D : BT { typedef typename BT::E E; // element_type E getme (int index); } Inside that struct, lets say we have a field of type E. Do we name it F or f? IMHO only for types, not for any other decls.

Re: Merge C++ conversion into trunk (4/6 - hash table rewrite)

2012-09-27 Thread Michael Matz
Hi, On Wed, 26 Sep 2012, Lawrence Crowl wrote: A lower-case type name indicates to me a non-changing type, i.e. nothing that depends on a template. In C we only had such types so we used lower-case names everywhere. With C++ and templates I think we should start using upper case for

Re: Merge C++ conversion into trunk (4/6 - hash table rewrite)

2012-09-26 Thread Michael Matz
Hi, On Tue, 25 Sep 2012, Lawrence Crowl wrote: On 8/15/12, Richard Henderson r...@redhat.com wrote: On 2012-08-15 07:29, Richard Guenther wrote: + typedef typename Element::Element_t Element_t; Can we use something less ugly than Element_t? Such as typedef typename Element::T

Re: [PATCH] Combine location with block using block_locations

2012-09-21 Thread Michael Matz
Hi, On Thu, 20 Sep 2012, Dehao Chen wrote: 4. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54650 Failed one regression test in libgomp (I didn't know that there are regression tests for libraries before...) This error should be a bug exposed by this patch. I'll try to provide a patch as

Re: Use conditional casting with symtab_node

2012-09-20 Thread Michael Matz
Hi, On Wed, 19 Sep 2012, Richard Guenther wrote: Just write: varpool_node *vnode; if ((vnode = node-try_variable ()) vnode-finalized) varpool_analyze_node (vnode); This has been the standard style for the past 2 decades and trading it for cascading if's is really a bad

Re: Use conditional casting with symtab_node

2012-09-20 Thread Michael Matz
Hi, On Wed, 19 Sep 2012, Lawrence Crowl wrote: On 9/19/12, Eric Botcazou ebotca...@adacore.com wrote: The language syntax would bind the conditional into the intializer, as in if (varpool_node *vnode = (node-try_variable () vnode-finalized))

Re: [PATCH] Combine location with block using block_locations

2012-09-19 Thread Michael Matz
Hi, On Wed, 19 Sep 2012, Martin Jambor wrote: (The patch does not introduce any of the asserts Michael's patch had because, as far as I my grep told me, IS_UNKNOWN_LOCATION is not in trunk yet and I suppose the pre-approval does not cover introducing things like that.) Dehaos patch

Re: Cgraph Modification Plan

2012-09-13 Thread Michael Matz
Hi, On Tue, 11 Sep 2012, Lawrence Crowl wrote: change node-symbol.whatever to node-ref_symbol().whatever Please don't uglify the compiler with this. If GTY deficiencies force you to do that, then hold off on it until GTY doesn't force you anymore. Ciao, Michael.

Re: [PATCH] Combine location with block using block_locations

2012-09-12 Thread Michael Matz
Hi, On Wed, 12 Sep 2012, Richard Guenther wrote: This will actually not work correctly in some cases. The problem is, if the prevailing decl is already part of another chain (say in another block_var list) you would break the current chain. Hence block vars need special handling in

Re: [PATCH] Combine location with block using block_locations

2012-09-12 Thread Michael Matz
Hi, On Wed, 12 Sep 2012, Richard Guenther wrote: It hides a bug. If we replace anything in BLOCK_VARS then the risk is that you generate an infinite chain in some BLOCK_VARS list and thus get infinite loops somewhere in the compiler. That's what I said for using SET_PREVAIL. But

Re: [PATCH] Combine location with block using block_locations

2012-09-12 Thread Michael Matz
Hi, On Wed, 12 Sep 2012, Michael Matz wrote: Hm, but we shouldn't end up streaming any BLOCKs at this point (nor local TYPE_DECLs). Those are supposed to be in the local function sections only where no fixup for prevailing decls happens. That's true, something is fishy with the patch

Re: C++'ization of cp/parser.c/h, limited C++ parsing support for gengtype, Remove dependency of cp/cp-lang.c on cp/parser.h

2012-09-11 Thread Michael Matz
Hi, On Mon, 10 Sep 2012, Gabriel Dos Reis wrote: You could also do this with an explicit pointer-to-context-struct parameter that's passed around (and that version of the patch I posted), but the class-based approached seems nicer to me. Are we talking about encapsulation or looking

Re: [PATCH] Combine location with block using block_locations

2012-09-11 Thread Michael Matz
Hi, On Tue, 11 Sep 2012, Richard Guenther wrote: +++ gcc/lto/lto.c (working copy) @@ -1559,8 +1559,6 @@ lto_fixup_prevailing_decls (tree t) { enum tree_code code = TREE_CODE (t); LTO_NO_PREVAIL (TREE_TYPE (t)); - if (CODE_CONTAINS_STRUCT (code, TS_COMMON)) -

Remove def operands cache

2012-09-11 Thread Michael Matz
Hi, the operands cache is ugly. This patch removes it at least for the def operands, saving three pointers for roughly each normal statement (the pointer in gsbase, and two pointers from def_optype_d). This is relatively easy to do, because all statements except ASMs have at most one def

Re: [PATCH] Combine location with block using block_locations

2012-09-11 Thread Michael Matz
Hi, On Tue, 11 Sep 2012, Dehao Chen wrote: Looks like we have two choices: 1. Stream out block info, and use LTO_SET_PREVAIL for TREE_CHAIN(t) This will actually not work correctly in some cases. The problem is, if the prevailing decl is already part of another chain (say in another

Re: gcc-c-api

2012-09-10 Thread Michael Matz
Hi, On Mon, 10 Sep 2012, Richard Guenther wrote: Thoughts? Micha was also working on the proposed introspection API, I blame him for not posting anything about this despite it's being ready since a few months... He. I didn't yet come to make the changes about operand inspectors since

Re: gcc-c-api

2012-09-10 Thread Michael Matz
Hi David, On Mon, 10 Sep 2012, David Malcolm wrote: Is it possible for you to post your work-in-progress code somewhere? Attached. I know that you don't feel it's ready for committing, but I would find it helpful - I'm interested in understanding the general approach, rather than seeing

Re: [PATCH][RFC] Add -Og

2012-09-03 Thread Michael Matz
Hi, On Mon, 3 Sep 2012, Richard Guenther wrote: Comments welcome, No comments? Then I'll drop this idea for 4.8. Hey, don't discard my face2face comments :) Regarding -Og it's about time, I like it, and your implementation is a start. The pass list (e.g. if to include LIM or not, or

Speedup loop header copying [part of PR 46590]

2012-09-02 Thread Michael Matz
Hi, as the bug report tells us one speed problem is loop header copying, in particular the update_ssa call that is done for each and every copied loop header but touches all blocks in a function. Now, one idea was to use an optimized update_ssa that works only on the relevant subset of blocks

Re: GCC stack backtraces

2012-08-29 Thread Michael Matz
Hi, On Wed, 29 Aug 2012, Ian Lance Taylor wrote: Does this seem like something we could usefully add to GCC? Does anybody see any big problems with it? Does it work without unwind tables? I suspect it doesn't as it's using libgccs unwinder, so that would be a problem if we were to use it

Re: C++ conversion? Why still .c (not .cc) files and CC (not CXX) in Makefile.in?

2012-08-28 Thread Michael Matz
Hi, On Tue, 28 Aug 2012, Ian Lance Taylor wrote: Or do we have a rule than any file using C++ specific feature should be renamed from *.c to *.cc at the moment the C++ feature goes inside? We do not have such a rule and I would not recommend it. I think we should rename all the files

Re: C++ and gather-detailed-mem-stats

2012-08-27 Thread Michael Matz
Hi, On Fri, 24 Aug 2012, Diego Novillo wrote: void foo (int bar) __attribute__((add_location_pack)); that directs GNU C++ to add a __Gcc_call_location_pack typed argument at each call site (properly constructed of course)? I really like this idea. Couldn't we make it even more

Re: Reproducible gcc builds, gfortran, and -grecord-gcc-switches

2012-08-16 Thread Michael Matz
Hi, On Thu, 16 Aug 2012, Simon Baldwin wrote: Thanks for the note. To make things more concrete I've appended a prototype patch below. I don't know if any other languages are affected, but if they are this patch should extend reasonably well to cover those also. Does anyone have

Re: [PATCH] Set current_function_decl in {push,pop}_cfun and push_struct_function

2012-08-16 Thread Michael Matz
Hi, On Thu, 16 Aug 2012, Richard Guenther wrote: If dumping a statement needs the containing function then we need to either pass that down, provide a way to get from statement to function, or stop requiring the function. Making the hash global is choice three (deallocating the hash

Re: [patch] PR54146 - rewrite rewrite_into_loop_closed_ssa

2012-08-16 Thread Michael Matz
Hi, On Wed, 15 Aug 2012, Steven Bosscher wrote: Please convince me that this : +/* Return the outermost superloop LOOP of USE_LOOP that is a superloop of + both DEF_LOOP and USE_LOOP. */ +static inline struct loop * +find_sibling_superloop (struct loop *use_loop, struct loop *def_loop) +{ +

Re: [PATCH] Set current_function_decl in {push,pop}_cfun and push_struct_function

2012-08-16 Thread Michael Matz
Hi, On Thu, 16 Aug 2012, Diego Novillo wrote: I like this approach, particularly since it would be used in contexts where there is no simpler scheme. I'm not crazy about overloading unused fields, but it's fine if we wrap it around a special accessor. I suppose we could also make

Re: [patch] PR54146 - rewrite rewrite_into_loop_closed_ssa

2012-08-16 Thread Michael Matz
Hi, On Thu, 16 Aug 2012, Steven Bosscher wrote: 2. In find_sibling_superloop the first step is to align the loop depth: ... 3. Now that USE_LOOP and DEF_LOOP are at the same nesting depth, Ah, that's the crucial point I missed, the while loops starts out with loops at the same depth; yes

Re: C++ and gather-detailed-mem-stats

2012-08-15 Thread Michael Matz
Hi, On Wed, 15 Aug 2012, Richard Guenther wrote: Prototype below - fire away on bikeshedding names. Make it mirror the preprocessor names that people are used to, and do away with the _loc_: __builtin_FILE, __builtin_FUNCTION, __builtin_LINE. Ciao, Michael.

Re: Merge C++ conversion into trunk (4/6 - hash table rewrite)

2012-08-15 Thread Michael Matz
Hi, On Wed, 15 Aug 2012, Richard Guenther wrote: Like the following, only the coverage.c use is converted. I've never seen template function arguments anywhere and having to repeat them all over the place is really really ugly (yes, even if only in the implementation). This goes with

Re: Merge C++ conversion into trunk (0/6 - Overview)

2012-08-15 Thread Michael Matz
Hi, On Wed, 15 Aug 2012, Jan Kratochvil wrote: It is a needless violation of C++ resolving rules. It's not needless as the examples here show. gdb is about helping people debug their stuff, not about language lawyering. There are various easy way how to get it working (in .gdbinit or

Re: [cxx-conversion] Make double_int a class with methods and operators. (issue6443093)

2012-08-09 Thread Michael Matz
Hi, On Thu, 9 Aug 2012, Mike Stump wrote: Ah. For simple objects like double_int I prefer to have either all ops mutating or all ops non-mutating. wide_int, which replaces double_int for int types, is always non-mutating, by value interface. In C++, it will be const input

Re: [cxx-conversion] Make double_int a class with methods and operators. (issue6443093)

2012-08-09 Thread Michael Matz
Hi, On Thu, 9 Aug 2012, Mike Stump wrote: On Aug 9, 2012, at 8:19 AM, Michael Matz wrote: Hmm. And maintaining a cache is faster than passing/returning/manipulating two registers? For the most part, we merely mirror existing code, check out lookup_const_double and immed_double_const

speedup stack var conflicts (PR54146)

2012-08-03 Thread Michael Matz
Hi, as Steven noted in the bug report one reason of the slowness are the myriads of calls to bitmap_set_bit, resulting from the clique generation at the start of basic blocks. Can be sped up by using bitmap_ior. He implemented upper triangular form for the conflict bitmap, but I couldn't

Re: [PATCH][2/n] Allow anonymous SSA names, a bunch of new predicates for SSA names

2012-08-03 Thread Michael Matz
Hi, On Fri, 3 Aug 2012, Richard Guenther wrote: 2012-08-03 Richard Guenther rguent...@suse.de * tree.h (SSA_NAME_IS_VIRTUAL_OPERAND): New predicate. (SSA_NAME_HAS_PARM_OR_RESULT_DECL): Likewise. (SSA_NAME_HAS_RESULT_DECL): Likewise. (SSA_NAME_HAS_PARM_DECL):

[1/3] remove var_ann: tlc for out-of-ssa

2012-08-01 Thread Michael Matz
Hi, this tidies ssa liveness calculation a bit (related to out-of-ssa). In particular it doesn't make use of var annotations to compress the index space from partitions to base variable indices anymore, but instead a hashmap built on the fly when we need it. The basevars itself actually

[2/3] remove var_ann: Remove used flag

2012-08-01 Thread Michael Matz
Hi, this removes the last member of var_ann_d, a bit used only locally in remove_unused_locals, so we can as well just use a bitmap. (The funny renaming of the member I had to do because gengtype doesn't like empty structs, the whole thing will be removed momentarily with the third patch).

[3/3] remove var_ann: die

2012-08-01 Thread Michael Matz
Hi, On Wed, 1 Aug 2012, Michael Matz wrote: The only remaining semantic of var_ann now is if it's non-zero it's a non-global variable that was put into referenced_vars. And that's removed in this patch. Most of the time it's not very interesting to know if a variable was put in referenced

rfa: merge handling of locals and globals in remove_unused_locals

2012-08-01 Thread Michael Matz
Hi, On Wed, 1 Aug 2012, Richard Guenther wrote: Ok. Would be nice to now unify global and local var handling with a single bitmap. Yeah, wanted to do that as follow-up. Namely like so. Regstrapping on x86_64-linux in progress on top of your remove-referenced-vars patches. Okay for

Re: [PATCH][5/n] into-SSA TLC

2012-07-30 Thread Michael Matz
Hi, On Mon, 30 Jul 2012, Richard Guenther wrote: This makes into-SSA no longer rely on variable annotations and instead uses on-the-side information local to into/update-SSA. Lookups can probably be avoided in some places if we pass around the auxiliar information instead of looking it up

Re: GCC Cauldron: Notes from the C++ ABI BOF

2012-07-11 Thread Michael Matz
Hi, On Wed, 11 Jul 2012, Ian Lance Taylor wrote: We will modify g++ to support a type attribute indicating the version of the type, as a string. This type attribute will be inherited by any other type that uses it, as a class/struct member or via inheritance. Type attributes will be

Re: Tree tail merging breaks __builtin_unreachable optimization

2012-07-05 Thread Michael Matz
Hi, On Wed, 4 Jul 2012, Steven Bosscher wrote: On Wed, Jul 4, 2012 at 7:02 PM, Ulrich Weigand uweig...@de.ibm.com wrote: Any suggestions how to fix this? Should tail merging detect __builtin_unreachable and not merge such block? That seems to be the most straight-forward thing to do. I

Re: Tree tail merging breaks __builtin_unreachable optimization

2012-07-05 Thread Michael Matz
Hi, On Thu, 5 Jul 2012, Richard Guenther wrote: On Wed, Jul 4, 2012 at 7:02 PM, Ulrich Weigand uweig...@de.ibm.com wrote: Any suggestions how to fix this? Should tail merging detect __builtin_unreachable and not merge such block? That seems to be the most straight-forward thing

Re: Tree tail merging breaks __builtin_unreachable optimization

2012-07-05 Thread Michael Matz
Hi, On Thu, 5 Jul 2012, Tom de Vries wrote: The asserts allow the return result to be optimized, but not the cfg conditions. AFAIU, we can insert the asserts earlier. F.i., we can insert aD.1711_6 = ASSERT_EXPR aD.1711_1(D), aD.1711_1(D) 0 before the GIMPLE_COND in bb2. Nope. That

Re: Dealing with C++98/11 ABI incompatibilities

2012-07-04 Thread Michael Matz
Hi, On Wed, 4 Jul 2012, Richard Guenther wrote: [... mangling change ...] That would not address the issue of interoperability of a C++03 library with a C++11 program or vice versa if they are using any of the changed interfaces for interoperability. Passing pointers to such objects

Re: Dealing with C++98/11 ABI incompatibilities

2012-07-04 Thread Michael Matz
On Wed, 4 Jul 2012, Michael Matz wrote: It will by the way not break unnoticed: interfaces using the problematic types would be mangled differently, and hence c++98 code would silently ... would _not_ silently ... be resolved to a c++11 variant expecting a different layout.

Re: libstdc++ c++98 c++11 ABI incompatibility

2012-07-03 Thread Michael Matz
Hi, On Mon, 2 Jul 2012, Jeff Law wrote: On 07/02/2012 11:53 AM, Paolo Carlini wrote: I also want to mention (I don't think somebody did already in the thread) that at some point, with Jason too, we discussed the idea of adding to each binary a marker about the ABI version which then

Re: RFA: Speedup expand_used_vars by 30 times (PR38474)

2012-07-03 Thread Michael Matz
Hi, On Mon, 2 Jul 2012, Mike Stump wrote: On May 26, 2012, at 8:03 PM, Michael Matz wrote: --- PR middle-end/38474 * cfgexpand.c (struct stack_var): Add slot_type member. (add_stack_var): Initialize it. (add_alias_set_conflicts): Remove

Re: [graphite] RFC: Add ISL variants of remaining PPL things

2012-07-03 Thread Michael Matz
Hi, On Mon, 2 Jul 2012, Tobias Grosser wrote: Yeah. If my above understanding is correct the path is clear. I believe it is. It somewhat works. It has problems in those cases where there are dependencies between different input dimensions in the scattering, which happens for

Re: [graphite] RFC: Add ISL variants of remaining PPL things

2012-07-02 Thread Michael Matz
Hi Tobi, On Fri, 29 Jun 2012, Tobias Grosser wrote: +static isl_constraint * +build_linearized_memory_access (isl_map *map, poly_dr_p pdr) +{ +} The function itself looks correct. However, I would personally have returned an isl_map instead of an isl_constraint. As you noticed I

[graphite] RFC: Add ISL variants of remaining PPL things

2012-06-26 Thread Michael Matz
Hi, so, to make progress on the graphite front we want to get rid of the ppl dependency. We start from Tobis move-to-isl-and-isl-scheduler branch at github, merged current trunk into that (see also Richis mails about cloog/isl configury), and add ISL implementations of the essential parts

Re: Graphite news

2012-06-22 Thread Michael Matz
Hi, On Fri, 22 Jun 2012, Tobias Grosser wrote: There are two areas that do not yet have an isl counterpart. The openscop import/export and the loop interchange heuristic. I think you can safely crop the openscop import/export, as it is currently unused and can later be added back if

Re: RFA: Fix PR53688

2012-06-21 Thread Michael Matz
Hi, On Wed, 20 Jun 2012, Richard Guenther wrote: Hmm?  The original expression is an address, I have to build a MEM_REF out of that, and the is_gimple_mem_ref_addr() just checked that that very address (after going through fold) is not acceptable as MEM_REF operand. So how could I

Re: New option to turn off stack reuse for temporaries

2012-06-21 Thread Michael Matz
Hi, On Thu, 21 Jun 2012, Richard Guenther wrote: The flag is not restricted to the C++ compiler and applies to all automatic variables. The use of that flag in the gimplifier (-in_cleanup_expr) makes it actually c++ specific. Also even with this flag there is no guarantee we cannot figure

Re: RFA: Fix PR53688

2012-06-20 Thread Michael Matz
Hi, On Tue, 19 Jun 2012, Richard Guenther wrote: The MEM_REF is acceptable to the tree oracle and it can extract points-to information from it. Thus for simplicity unconditionally building the above is the best. But it doesn't work, as refs_may_alias_p_1 only accepts certain operands in

Re: RFA: Fix PR53688

2012-06-20 Thread Michael Matz
Hi, On Wed, 20 Jun 2012, Richard Guenther wrote: +  exp = fold_build2 (MEM_REF, +                    build_array_type (char_type_node, +                                      build_range_type (sizetype, +                                                        size_one_node, len)), +  

Re: RFA: Fix PR53688

2012-06-19 Thread Michael Matz
Hi, On Tue, 19 Jun 2012, Richard Guenther wrote: So, we have to build a memref always and rewrite its type to one representing the real size.  Note that TYPE_MAX_VALUE may be NULL, so we don't need to check for 'len' being null or not. This fixes the C testcase (don't know about fma

Re: C++98/C++11 ABI compatibility for gcc-4.7

2012-06-18 Thread Michael Matz
Hi, On Mon, 18 Jun 2012, Gabriel Dos Reis wrote: Jeff, please note that the path that Michael took from what was said ealier (in particular the quote he provided in his message) and the conclusion of enthusiasm for soname bump is still a mystery. The quoted part suggested switching

Re: a fork of gcc is sold for $26k?

2012-06-16 Thread Michael Matz
Hi, On Sat, 16 Jun 2012, Jonathan Wakely wrote: On 16 June 2012 12:01, Arch hvv wrote: Have anybody inspected it? Is GPL violated in this case or not (e.g. do they provide all patches they've made to gcc)? If it's based on llvm-gcc then it only uses GCC as the front-end so there may be

Re: C++98/C++11 ABI compatibility for gcc-4.7

2012-06-16 Thread Michael Matz
Hi, On Fri, 15 Jun 2012, Gabriel Dos Reis wrote: On Fri, Jun 15, 2012 at 3:12 PM, James Y Knight f...@fuhm.net wrote: IMO, at the /very least/, libstdc++ should go ahead and change std::string to be the new implementation. Once std::string is ABI-incompatible between the modes, there's

Re: RFA: better gimplification of compound literals

2012-06-15 Thread Michael Matz
Hi, On Thu, 14 Jun 2012, Richard Guenther wrote: Restarted regstrapping the thing on x86_64 again.  Okay if that passes? Ok. But I wonder how the symtab cannot be ready when we gimplify - after all we gimplify only from after cgraph_finalize_compilation_unit ... Ready may have been

Re: RF[CA]: Don't restrict stack slot sharing

2012-06-15 Thread Michael Matz
Hi, On Wed, 6 Jun 2012, Richard Guenther wrote: Regstrapped this patch (all languages+Ada) on x86_64-linux, with and without the above scheduler hacks, no regressions (without the scheduler hacks). The n_temp_slots_in_use part is ok. The rest is also a good idea, and indeed the

Re: RFA: better gimplification of compound literals

2012-06-14 Thread Michael Matz
Hi, [Honza, for you a question below] On Wed, 13 Jun 2012, Richard Guenther wrote: Was a non-implemented optimization.  If the compound literal value isn't used as lvalue and doesn't have its address taken (and generally fits the current predicate) we can as well subst it in place

Re: RFA: better gimplification of compound literals

2012-06-14 Thread Michael Matz
Hi, On Thu, 14 Jun 2012, Jan Hubicka wrote: if (!from_decl ... || (symtab_get_node (from_decl)-symbol.in_other_partition)) return true; in can_refer_decl_in_current_unit_p. Honza: I don't understand this particular condition. If we have a from_decl

Re: RFA: better gimplification of compound literals

2012-06-14 Thread Michael Matz
Hi, On Thu, 14 Jun 2012, Michael Matz wrote: In any case, this patch is currently in regstrapping on x86-64. Okay if it passes (modulo changes for the above symtab_get_node() issue)? After discussion with Honza, consider the patch changed like so: if (!from_decl || TREE_CODE

RFA: better gimplification of compound literals

2012-06-13 Thread Michael Matz
Hi, On Tue, 12 Jun 2012, Richard Guenther wrote: Ok, I see the C frontend hands us this as  return  VEC_PERM_EXPR a , b , Unknown tree: compound_literal_expr    v4si D.1712 = { 0, 4, 1, 5 }; ; and gimplification in some way fails to gimplify it to { 0, 4, 1, 5 }. Was a

RFA: Fix path based disambiguation in RTL oracle

2012-06-11 Thread Michael Matz
Hi, I haven't yet checked in my patch from last week about not creating alias-set conflicts for stack slot sharing mostly due to the caveat I mentioned. Namely that the RTL disambiguator still uses path-based means (which belong to type-based aliasing) even in the write_dependence tests.

RF[CA]: Don't restrict stack slot sharing

2012-06-06 Thread Michael Matz
Hi, On Tue, 29 May 2012, Richard Guenther wrote: [... patch about making conflict handling for stack slot sharing faster...] The volatile handling is very odd - the objects_must_conflict_p code basically says that two volatile vars may always share stack slots?! What's the reasoning

Re: [PATCH][RFC] Extend memset recognition

2012-05-31 Thread Michael Matz
Hi, On Thu, 31 May 2012, Richard Guenther wrote: Bootstrapped (with memset recognition enabled by default) and tested on x86_64-unknown-linux-gnu with the aforementioned issues. The following fixes it by simply always adding -fno-tree-loop-distribute-patterns to builtins.exp.

Re: RFA: Speedup expand_used_vars by 30 times (PR38474)

2012-05-29 Thread Michael Matz
Hi, On Tue, 29 May 2012, Richard Guenther wrote: The other change in function.c further improves the temp slot machinery. While expanding free_temp_slots is called after each statement, and if it is able to free a slot it needs to update the RTX-slot mapping (a htab_t).  The freeing

Re: [cxx-conversion] New Hash Table (issue6244048)

2012-05-29 Thread Michael Matz
Hi, On Sun, 27 May 2012, Gabriel Dos Reis wrote: people actually working on it and used to that style.  We don't want to have a mixture of several different styles in the compiler.  I (and I expect many others) don't want anyone working around the latter by going over the whole source

RFA: temp slot TLC [1/3]

2012-05-26 Thread Michael Matz
Hi, I still had some cleanups for age-old code lying around, and thought to bring it up to date. The whole dealing of slots for temporary stack space in function.c was never really updated to the way we're meanwhile expanding statements. It has facilities that aren't useful anymore. In the

RFA: temp slot TLC [2/3]

2012-05-26 Thread Michael Matz
Hi, and this is the large cleanup, removing dead code introduced by [1/3] for real, and removing the 'keep' parameter from assign_temp and friends, which now is always zero (in the compiler proper and in the backends). That latter is the largest churn. If [1/3] is approved this whole patch is

RFA: temp slot TLC [3/3]

2012-05-26 Thread Michael Matz
Hi, and this is a further small cleanup. pop_temp_slots is now the same as free_temp_slots (modulo the level-- of course), so there's no need in calling both. (and preserve_temp_slots(NULL) is useless now). Regstrapped on x86_64-linux together with [1/3] and [2/3], all languages

RFA: Speedup expand_used_vars by 30 times (PR38474)

2012-05-26 Thread Michael Matz
Hi, [for certain test cases :-) ] the temp slot cleanups I just sent where actually motivated by PR38474. It exposes many slownesses in the compiler, but at -O0 the only remaining one is the expand phase. expanding variables is the one thing (on my machine here, with -O0 -g f951): 30

<    3   4   5   6   7   8   9   10   11   12   >