[Bug rtl-optimization/68173] gcc takes a long time and a lot of memory with -O0 on source file with very large expression

2015-12-23 Thread stevenb.gcc at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68173

--- Comment #15 from stevenb.gcc at gmail dot com  ---
> I wonder if we should (finally) use a RB tree for bitmap.  I even remember
> some patches posted to improve this (from Steven?) this or last year?

I used splay trees, they're a lot easier than balanced trees like RB or AVL.

https://gcc.gnu.org/ml/gcc-patches/2013-03/msg00170.html

[Bug rtl-optimization/57763] [4.9 Regression]: comp-goto-1.c: ICE verify_flow_info failed, error: EDGE_CROSSING missing across section boundary

2013-07-07 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57763

--- Comment #11 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com ---
 --- Comment #9 from Uroš Bizjak ubizjak at gmail dot com ---
 I have tried to compile gcc.dg/comp-goto-1.c with the patched gcc, but
 compilation failed with:

Huh, worked for me. What revision, what compiler options did you use?

[Bug debug/56950] compare-debug failure for gcc.dg/pr41345.c with fschedule-insns

2013-05-20 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56950

--- Comment #8 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
---
 --- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org ---
 That still doesn't look safe -fcompare-debug wise.
 I mean, if BB ends in a DEBUG_INSN (or more), it could be preceeded by note,
 label, or some other insns.  So shouldn't that be instead
   rtx insn2 = DEBUG_INSN_P (insn) ? prev_nondebug_insn (insn2) : insn;

I suppose so, yes.

 (I'd hope there shouldn't be DEBUG_INSN only bb's, because then with -g0 insn
 ought to be NULL and NEXT_INSN (insn) should crash), and use this in the
 !NOTE_P and !LABEL_P tests?

This block is a DEBUG_INSN-only block, but insn is never NULL: BB_END
will be the basic block note.


[Bug web/55237] Linkify r123456 in comments to point to SVN

2013-05-15 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55237

--- Comment #15 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com ---
 --- Comment #14 from Frédéric Buclin LpSolit at netscape dot net ---
 On the other hand, you are free to not click on a register name which is
 linkified.

That is true, but it's a bit distracting.
Let's not bike shed over this. It's nothing major, only nice-to-have :-)

[Bug target/56858] alpha looks for NOTE_INSN_EH_REGION notes that cannot exist

2013-04-21 Thread stevenb.gcc at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56858



--- Comment #13 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2013-04-21 21:36:32 UTC ---

 Steven, is it possible to emit NOTE_INSN_EH_REGION_END in such way that it

 would not split the call and its NOTE_INSN_CALL_ARG_LOCATION? This would solve

 the above problem in the most elegant way.



The most elegant way is to not use NOTE_INSN_EH_REGION notes. I don't

like the proposed fix, the notes should be created only for final.


[Bug target/56858] alpha looks for NOTE_INSN_EH_REGION notes that cannot exist

2013-04-08 Thread stevenb.gcc at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56858



--- Comment #10 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2013-04-08 19:42:51 UTC ---

 Sure.  Do you know any package that combines C++ EH with IEEE exceptions?

 I don't.  In fact, I don't actually know of a package that wants to enable

 trapping fp math at all.



I barely know a thing about EH, or IEEE exceptions, let alone a

combination or two. I'm a doc^Wn aerospace engineer, not a computer

scientist.



 Do you believe that you're going to be able to delete the notes entirely,

 and that it's only Alpha that's keeping them alive?  That's certainly not

 true, I assure you.



Removing the notes entirely is the goal eventually, but I'd settle for

making them local to final.c for now.



What besides alpha and final are keeping these notes alive? You've

probably seen my grep results, and at least from passes.c there

doesn't seem to be anything between pass_convert_to_eh_region_ranges

and pass_final that would use the INSN_NOTEs:



  NEXT_PASS (pass_convert_to_eh_region_ranges);

  NEXT_PASS (pass_shorten_branches);

  NEXT_PASS (pass_set_nothrow_function_flags);

  NEXT_PASS (pass_dwarf2_frame);

  NEXT_PASS (pass_final);



AFAIU the only code transformations done in these passes are in

shorten_branches that shouldn't care whether it's dealing with the

REG_EH_REGION notes or the NOTE_INSN_EH_REGION notes.



But my U in AFAIU is obviously no-where near your U when it comes to

EH, so if you can explain a bit, I'd really appreciate it! :-)



(On the topic of notes: note to self, kill NOTE_EH_CONTEXT.)


[Bug c/52952] Wformat location info is bad (wrong column number)

2013-03-30 Thread stevenb.gcc at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52952



--- Comment #18 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2013-03-30 12:54:12 UTC ---

 * It would be extremely nice to update the testsuite to check the locations 
 are

 correct. This is unfortunately a lot of boring work, so if I cannot get help 
 to

 do this, I hope it is not a pre-condition for approval.



You mean for existing test cases? I will help with that, just say

what/where/when ;-)


[Bug libgcc/56460] _Unwind_Find_FDE is O(n) in the number of frame infos, (and LLVM's JIT will generate many of them)

2013-02-27 Thread stevenb.gcc at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56460



--- Comment #5 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2013-02-27 21:09:55 UTC ---

 --- Comment #4 from Chris Reed cr at progress dot com 2013-02-27 12:15:52 
 UTC ---

 Yes, I'm happy to address the copyright issue - the copyright disclaimer route

 seems simpler.



I can take care of a patch along the lines of your idea. Working on it

already. It's too late now for GCC 4.8 but I will attach the patch to

this bug report when it's ready.


[Bug rtl-optimization/56131] [4.8 regression] gcc.dg/pr56035.c ICEs gcc on sparc-linux

2013-02-25 Thread stevenb.gcc at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56131



--- Comment #22 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2013-02-25 19:54:59 UTC ---

 Looking for targets that occur in both lists (and ignoring mips) I find only

 picochip. So, AFAIU, PR56242 might still trigger for picochip.



No. It is impossible for a target to have SEQUENCEs and a CFG at the

same time. The CFG code doesn't handle SEQUENCEs. Having SEQUENCEs for

delay slots in the CFG would result in a verify_flow_info failure,

because there would be non-jump insns (i.e. the SEQUENCE) at the end

of basic blocks ending in a branch.



Any target pretends to have a valid CFG and SEQUENCEs at the same time

is broken.


[Bug rtl-optimization/56131] [4.8 regression] gcc.dg/pr56035.c ICEs gcc on sparc-linux

2013-02-25 Thread stevenb.gcc at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56131



--- Comment #23 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2013-02-25 19:59:09 UTC ---

 For all these targets, we recompute the CFG at the start of 
 pass_machine_reorg:

 ...

 $ egrep '(compute|free)_bb_for_insn' gcc/config/*/*

 gcc/config/arm/arm.c:  compute_bb_for_insn ();

 gcc/config/bfin/bfin.c:  compute_bb_for_insn ();

 gcc/config/c6x/c6x.c:  compute_bb_for_insn ();

 gcc/config/frv/frv.c:  compute_bb_for_insn ();

 gcc/config/i386/i386.c:  compute_bb_for_insn ();

 gcc/config/ia64/ia64.c:  compute_bb_for_insn ();

 gcc/config/mep/mep.c:  compute_bb_for_insn ();

 gcc/config/mips/mips.c:compute_bb_for_insn ();

 gcc/config/mips/mips.c:  free_bb_for_insn ();

 gcc/config/mn10300/mn10300.c:  compute_bb_for_insn ();

 gcc/config/picochip/picochip.c:  compute_bb_for_insn ();

 gcc/config/spu/spu.c:  compute_bb_for_insn ();

 gcc/config/spu/spu.c:  free_bb_for_insn ();

 gcc/config/spu/spu.c:  compute_bb_for_insn ();

 gcc/config/spu/spu.c:  free_bb_for_insn ();

 gcc/config/tilegx/tilegx.c:  compute_bb_for_insn ();

 gcc/config/tilepro/tilepro.c:  compute_bb_for_insn ();



For GCC 4.9 we should make freeing the CFG late the default.

I have patches for that in my queue already.


[Bug debug/53948] [4.8 Regression] Assignment line missing for -O0 -g

2013-02-07 Thread stevenb.gcc at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53948



--- Comment #6 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2013-02-07 20:24:07 UTC ---

On Thu, Feb 7, 2013 at 9:04 PM, law at redhat dot com wrote:

 The real way to get the prior behaviour without reverting the patch is to

 either explicitly mark parameters so we can check for them in this one hunk of

 code.



That is what I did in http://gcc.gnu.org/ml/gcc-patches/2012-07/msg00847.html



  Or to create a helper function in a suitable location that can map from

 a reg to its decl, then check if it's a parameter.  Given that flags in the

 main rtl structures are generally scarce, I think the latter is a better

 solution given how rarely we need to make this distinction.



I used an rtl flag because I could make one available. Structures on

the side always make me nervous, they tend to be fragile and hard to

update.





 It's unfortunate that this P1 regression was left languishing, half analyzed 
 in

 our tree for 6+ months ;(



Not true: http://gcc.gnu.org/ml/gcc-patches/2012-07/msg00847.html



It's unfortunate that the patch was never reviewed.


[Bug pch/54117] [4.8 Regression] FAIL: ./decl-3.h -O0 -g (internal compiler error)

2013-01-08 Thread stevenb.gcc at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54117



--- Comment #9 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2013-01-08 17:39:23 UTC ---

 I think reverting would be backward - we should clearly move forward.  One

 way forward is to simply declare PCH unsupported with stabs.



This is what I think we should do about this bug. The problem isn't

limited to PCH, it also happens with other delayed outputs. For

instance, there's stabs info for symbols not emitted at all by

cgraphunit, and debug info isn't emitted at all with LTO.



The DWARF-to-*out debug translator should be the way forward IMHO.

It'd simplify many things in GCC internals. I might give it a stab (no

pun...) for GCC 4.9, but for GCC 4.8 I really don't see any way to fix

this issue.


[Bug pch/54117] [4.8 Regression] FAIL: ./decl-3.h -O0 -g (internal compiler error)

2013-01-08 Thread stevenb.gcc at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54117



--- Comment #11 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2013-01-08 18:04:09 UTC ---

 All that to avoid one #include output.h in one file?



Is that one little thing really the only change you see? I see a

different picture.



The change is a major step in the direction of making a clear cut

between the middle/back end and the front ends. A front end should not

output assembly, period, if we want the front ends to become separate

libraries, in the long run, that can be used by external tools (static

checkers, IDEs, etc.) like clang. For the long term, this is IMHO the

only viable solution for keeping the GCC front ends relevant.



The change also allows the compiler to open the assembler file in

write-only mode and to open it only after the front end is done. My

plan is to postponed it even further: for GCC 4.9 I'd like to work on

streaming slim LTO objects directly to a .o file, without going

through an assembler file at all (this is relatively simple for ELF

targets).



Finally, the change also simplifies the PCH mechanism further. If

we're ever going to replace PCH-as-a-memory-dump with something

streamed, we'll have to make an effort at only streaming IR objects,

not assembler output.



Had I known this change would break stabs like this, I'd obviously

have tried to solve that problem first. But to back out the change now

would be a mistake. Nobody is going to fix those *out.c back ends, as

you very well know.


[Bug middle-end/43631] var-tracking inserts notes with non-NULL BLOCK_FOR_INSN in between basic blocks

2012-12-07 Thread stevenb.gcc at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43631



--- Comment #10 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2012-12-07 10:16:49 UTC ---

On Fri, Dec 7, 2012 at 11:11 AM, izamyatin at gmail dot com wrote:

 Looks like there is some garbage in BLOCK_FOR_INSN field for barrier

 instruction...



A BARRIER  doesn't even have a BLOCK_FOR_INSN. It's not an insn, after all.



Where/how do you end up looking at BLOCK_FOR_INSN for a BARRIER?


[Bug middle-end/52640] [4.8 Regression] performance bottleneck: gcc/tree.c;value_member

2012-09-07 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52640

--- Comment #16 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2012-09-07 19:07:27 UTC ---
 Any progress on the real solution?  If not, can you install the branch fix 
 on
 trunk?  Thx.

I think I already mentioned before that the branch fix is the only
real fix I can think of. The problem has been aggravated by the
visibility machinery, it depends on having a pending-externs list.


[Bug middle-end/54364] Tail call jumps not threaded

2012-08-24 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54364

--- Comment #2 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2012-08-24 12:01:40 UTC ---
With -O2 this is cleaned up by bb-reorder.


[Bug middle-end/53695] [4.8 Regression] ICE: in dfs_enumerate_from, at cfganal.c:1221 with -O2 -ftracer and labels/gotos

2012-08-23 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53695

--- Comment #12 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2012-08-23 07:56:13 UTC ---
 The patch is of couse a big hammer because it has a cost, but IMHO
 it still makes sense.

I'm not convinced. GCC has always detected this kind of loop (even the
old non-cfg loop code recognizes this kind of loop) and it has never
caused any problems before your patch to keep the loop structure
up-to-date. To me, this means that the fix should be in the loop
updating, not in abandoning a decades-old behavior of the compiler.


[Bug middle-end/53695] [4.8 Regression] ICE: in dfs_enumerate_from, at cfganal.c:1221 with -O2 -ftracer and labels/gotos

2012-08-23 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53695

--- Comment #15 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2012-08-23 08:49:32 UTC ---
On Thu, Aug 23, 2012 at 10:07 AM, rguenther at suse dot de
gcc-bugzi...@gcc.gnu.org wrote:
 Already the input to tracer is wrong in that we have lost
 a loop, the one with abnormal path from latch to header (which
 we _do_ reject during loop discovery!).

But this isn't a natural loop. It's an irreducible loop with loop
entries in basic block 3 and basic block 4 (in the pre-tracer CFG from
comment #7) and loop discovery doesn't record irreducible loop.

What tracer does here is known as node splitting to make an
irreducible region reducible. I don't think it's a
intentional/conscious node splitting but tracer does have the effect
of node splitting. After tracer, the loop with bbs {4,5,3} is a
natural loop and the CFG is reducible.


  So what happens is
 that we turn this loop into one that would have been recognized,
 swap header and latch and thus get the abnormal edge to a tolerated
 place (header to latch).  That inconsistency is what my patch tries
 to address (another way would be to simply allow EH/abnormal
 latch - header edges as well).

But with your patch we'd also reject all already reducible loops if
there are only paths with one or more abnormal edges from the loop
header to the latch. That is more conservative than necessary. Also,
AFAIU, with your patch we'd reduce loops with a finally block
(something like
for(;;){try{...maybe_throw;...;if(...)break;}finally{...}}) because
all paths to the loop latch would go through the finally block via EH
edges.


 but it does not add bb3 to loop1, nor zero out its latch
 and setting may-have-multiple-latches.

That, to me, is the bug we should try to solve here.

  The cfghook
 only takes care of updating the loop structure with
 respect to the _new_ basic block but does not consider
 that the old one magically becomes part of a loop.

I think it may be possible to construct a test case just like this one
with an initially irreducible CFG that tracer makes reducible.

Anyway, consider this test case, which is the pre-tracer CFG but
without abnormal edges:

void do_something_1 (void);
void do_something_2 (void);
int some_cond (void);
void make_bb_non_empty ();

void
foo (void)
{
bb2:
  make_bb_non_empty ();
  goto bb3;

bb4:
  switch (some_cond ())
{
case 1:
  goto bb3;
case 2:
  goto bb5;
default:
  goto bb6;
}

bb3:
  do_something_1 ();
  goto bb4;

bb5:
  do_something_2 ();
  goto bb4;

bb6:
  return;
}

This gives the following CFG in the .129t.cddce2 dump:

; 3 loops found
;;
;; Loop 0
;;  header 0, latch 1
;;  depth 0, outer -1
;;  nodes: 0 1 2 3 4 5 6 7
;;
;; Loop 1
;;  header 5, latch 4
;;  depth 1, outer 0
;;  nodes: 5 4 3 6
;;
;; Loop 2
;;  header 3, latch 6
;;  depth 2, outer 1
;;  nodes: 3 6

   ENTRY
 |
 V
 |
2(0)
 |
 |
 V
 |
 | +--4(1)-+
 | |   |
 | V   ^
 | |   |
 | |   +
 | +  /
 | | /
 5(1)--3(2)--6(2)-+
   /\   |
  /  +-+
 /
|
V
|
   7(0)
|
   EXIT

So now the loop {5,4,3,6} is detected, even though the CFG is
basically the same as the pre-tracer one from comment #7 (only
difference is that the critical edge 3,5 in the above CFG is split
to give basic block 4.

Makes me wonder why the loop isn't recognized in the original test case...


[Bug tree-optimization/46590] [4.6/4.7/4.8 Regression] long compile time with -O2 and many loops

2012-08-22 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46590

--- Comment #29 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2012-08-22 17:33:00 UTC ---
 I thought that loop header copying wouldn't need to insert new PHI nodes
 and thus can do with TODO_update_ssa_no_phi if we are in loop-closed SSA form,
 but appearantly that is not the case (I didn't inverstigate further here,
 but possibly that's just because virtual operands are not in loop-closed
 SSA form).

I'll experiment with VOPs in LC-SSA.


[Bug middle-end/54146] Very slow compile with attribute((flatten))

2012-08-21 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54146

--- Comment #58 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2012-08-21 13:56:27 UTC ---
FWIW, I think all patches addressing parts of this bug are candidates
for back-porting to release branches. They are all almost trivial.


[Bug middle-end/54146] Very slow compile with attribute((flatten))

2012-08-16 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54146

--- Comment #50 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2012-08-16 13:55:40 UTC ---
On Thu, Aug 16, 2012 at 2:10 PM, rguenth at gcc dot gnu.org
gcc-bugzi...@gcc.gnu.org wrote:
 bitmap stats are confusing because they show leaks for bitmaps we free
 by releasing their obstack.  DF and PTA bitmaps are largest.

The bitmap obstack stats are not very reliable anyway, I think. I've
been using my own stats for this (with a size_t version of
obstack_memory_used:

+static size_t
+obstack_memory_used2 (struct obstack *h)
+{
+  struct _obstack_chunk* lp;
+  size_t nbytes = 0;
+
+  for (lp = h-chunk; lp != 0; lp = lp-prev)
+{
+  nbytes += (size_t) (lp-limit - (char *) lp);
+}
+  return nbytes;
+}
+

so that also the freed bitmap elements are counted). With that, you
can show that the reg_obstack and bitmap_default_obstack grow up to
several GB that isn't released between passes. An added problem is
that IRA puts its bitmap on its own obstack (as it should, really) but
that means the 3GB of free elements on the reg_obstack and
bitmap_default_obstack remain unused. So on the machine I use for
testing (cfarm gcc17), the memory footprint is reduced by 2GB (~25%)
with this hack:

Index: ira.c
===
--- ira.c   (revision 190442)
+++ ira.c   (working copy)
@@ -4132,6 +4132,12 @@
   int max_regno_before_ira, ira_max_point_before_emit;
   int rebuild_p;

+  /* There shouldn't be anything on these obstacks.  */
+  bitmap_obstack_release (NULL);
+  bitmap_obstack_initialize (NULL);
+  bitmap_obstack_release (reg_obstack);
+  bitmap_obstack_initialize (reg_obstack);
+
   if (flag_caller_saves)
 init_caller_save ();


There is in general a lot of BITMAP_ALLOC(NULL) abuse in the compiler.
I have patches to address the cases in tree-ssa-live.c and dse.c, and
I intend to look at the tree-ssa-ter and cfgexpand cases this weekend.


[Bug tree-optimization/54146] Very slow compile with attribute((flatten))

2012-08-06 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54146

--- Comment #20 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2012-08-06 09:09:02 UTC ---
On Mon, Aug 6, 2012 at 10:45 AM, rguenth at gcc dot gnu.org
gcc-bugzi...@gcc.gnu.org wrote:
 Ick, I suppose similar issues exist on the tree level for passes that
 think that memory / compile-time usage O(number-of-ssa-names or basic-blocks)
 is ok (and I suppose it really _is_ ok ...?)

I think this is OK, yes. In general, anything linear in some measure
of the function should be OK.
NB, this thing in ifcvt is *not* O(max_reg_num()) but
O(max_reg_num()*n_basic_blocks).

I suspect that in the tree optimizers, a non-linear issue exists for
rewriting into loop-closed SSA form. It looks like it is
O(num_ssa_names*n_basic_blocks). I'm trying to confirm that (in my
evening free time, so don't hold your breath ;-).


[Bug tree-optimization/53986] missing vrp on bit-mask test, LSHIFT_EXPR not handled

2012-08-05 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53986

--- Comment #7 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2012-08-05 13:53:30 UTC ---
On Sun, Aug 5, 2012 at 3:32 PM, vries at gcc dot gnu.org
gcc-bugzi...@gcc.gnu.org wrote:
 I think you forgot the cast to unsigned after the add that represents the
 currently generated code:

It would seem so...

Anyway, I am quite sure to remember correctly that I had the unsigned
before the add, and it caused bootstrap or test issues. But as always,
patches welcome :-)


[Bug pch/53880] [4.8 Regression] compile time regression when generating precompiled headers for boost

2012-07-26 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53880

--- Comment #19 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2012-07-26 19:44:59 UTC ---
Dodji, please see http://gcc.gnu.org/ml/gcc-patches/2012-07/msg01204.html


[Bug pch/53880] [4.8 Regression] compile time regression when generating precompiled headers for boost

2012-07-24 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53880

--- Comment #8 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2012-07-24 08:16:01 UTC ---
(In reply to comment #7)
I don't think it's really called from there. It should be called from
gt_pch_save. gt_pch_nx_line_maps only registers the function (for
pointer rewriting, AFAIU).


[Bug pch/53880] [4.8 Regression] compile time regression when generating precompiled headers for boost

2012-07-24 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53880

--- Comment #11 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2012-07-24 09:41:18 UTC ---
 Err, isn't the GTY annotation in

  as y1.  x0 is the spelling location for the argument token 1,
  and x2 is the spelling location for the argument token 2.  */
   source_location * GTY((length (2 * %h.n_tokens))) macro_locations;

 simply pointless?

I don't think so. You still want to pointer-rewrite it if you output a PCH.


[Bug pch/53880] [4.8 Regression] compile time regression when generating precompiled headers for boost

2012-07-24 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53880

--- Comment #13 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2012-07-24 10:03:05 UTC ---
On Tue, Jul 24, 2012 at 11:42 AM, rguenth at gcc dot gnu.org
gcc-bugzi...@gcc.gnu.org wrote:
 The pointer to the array, but not the array elements.  So it's pointless
 to know the length and

souce_location * macro_locations;

 should still rewrite the pointer itself, no?

Hmm.  I'm not sure. Without the annotation, how does the PCH machinery
know how long that array is? OTOH there isn't anything else, other
than those dead loops, that looks at h.n_tokens.

Perhaps there should be a warning from gengtype if the length
attribute is applied to a scalar type.


[Bug pch/54042] always create and use

2012-07-20 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54042

--- Comment #3 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2012-07-20 16:23:33 UTC ---
On Fri, Jul 20, 2012 at 5:36 PM, pinskia at gcc dot gnu.org
gcc-bugzi...@gcc.gnu.org wrote:
 --- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org 2012-07-20 
 15:36:11 UTC ---
 PPH might be already supporting this though.

No, read the paper linked to by this message:
http://gcc.gnu.org/ml/gcc/2012-05/msg00335.html

PPH development is paused (perhaps abandoned).


[Bug target/53975] [ia64] Target register of a speculative load moved to a branch register prior to the chk.s instruction

2012-07-19 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53975

--- Comment #12 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2012-07-19 18:11:30 UTC ---
On Thu, Jul 19, 2012 at 7:50 PM, amonakov at gcc dot gnu.org
gcc-bugzi...@gcc.gnu.org wrote:
 I wonder how this bug managed to stay latent all these years :)

This is very simple: Nobody uses ia64 ;-)


[Bug java/52730] Java front end emits assembly

2012-03-26 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52730

--- Comment #5 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2012-03-26 21:31:44 UTC ---
Yes, I've reverted that patch for the time being.


[Bug tree-optimization/43940] DOM doesn't propagate constants properly

2012-03-19 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43940

--- Comment #7 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2012-03-19 09:51:41 UTC ---
 --- Comment #6 from Richard Guenther rguenth at gcc dot gnu.org 2012-03-19 
 09:34:58 UTC ---
 I think this was fixed by

 2012-02-29  Bill Schmidt  wschm...@linux.vnet.ibm.com

        PR tree-optimization/52424
        * tree-ssa-dom.c (dom_opt_leave_block): Push a marker before
        calling dom_thread_across_edge.

I think it was fixed by ifcombine. But in any case, yes, resolved AFAIC.


[Bug middle-end/45273] [4.4/4.5/4.6/4.7 Regression] The compiler depends on the host double (-fprofile-corection only)

2012-01-20 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45273

--- Comment #8 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2012-01-20 19:17:53 UTC ---
Is there already a meta bug for patches queued for 4.8?


[Bug rtl-optimization/51495] [4.7 Regression] ICE: in force_nonfallthru_and_redirect, at cfgrtl.c:1171 with computed goto

2011-12-12 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51495

--- Comment #3 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2011-12-12 14:09:12 UTC ---
 Untested fix.

Wouldn't that fix make this operation O(E^2)?


[Bug bootstrap/51388] Configure failure to detect unsupported warning options for non-bootstrap builds (including cross builds)

2011-12-02 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51388

--- Comment #3 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2011-12-02 14:59:37 UTC ---
On Fri, Dec 2, 2011 at 3:51 PM, rguenth at gcc dot gnu.org
gcc-bugzi...@gcc.gnu.org wrote:
 I see

 gcc-4.3 -c -Wno-narrowing t.c -DHAVE_ARG
 cc1: error: unrecognized command line option -Wno-narrowing

 with FSF GCC 4.3.6.  So, are you sure this isn't behavior caused by
 vendor patches?  (openSUSE GCC 4.3 also works)

What do you see with gcc-4.3 -c -Wno-narrowing t.c?

FWIW this is Debian GCC 4.3.2-1.1 on gcc17.


[Bug rtl-optimization/48389] [4.5/4.6 Regression] ICE: in make_edges, at cfgbuild.c:319 with -mtune=pentiumpro

2011-04-09 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48389

--- Comment #14 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot 
com 2011-04-09 10:08:57 UTC ---
On Fri, Apr 8, 2011 at 1:38 PM, matz at gcc dot gnu.org
gcc-bugzi...@gcc.gnu.org wrote:
 --- Comment #10 from Michael Matz matz at gcc dot gnu.org 2011-04-08 
 11:37:59 UTC ---
 I was asking what specifically doesn't work.  I.e. why the changes to cfgbuild
 were necessary.  I'm not so dense to not understand that it doesn't work.

But you are so dense to not look at all information in the PR? :-P

I had made PR48486 blocking this one. It explains what the cfgbuild.c
changes were supposed to resolve.


[Bug rtl-optimization/48389] [4.5/4.6/4.7 Regression] ICE: in make_edges, at cfgbuild.c:319 with -mtune=pentiumpro

2011-04-07 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48389

--- Comment #9 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2011-04-07 21:28:12 UTC ---
 --- Comment #7 from Michael Matz matz at gcc dot gnu.org 2011-04-07 
 15:38:38 UTC ---
 Hmpf, what doesn't work with just moving the rebuild_jump_labels call?
 The testcase works, but I haven't tried the testsuite.  Because it should
 theoretically work.

Yes, it should, but it does not. Why do you think I'm meddling with cfgbuild.c?

The EDGE_EXECUTABLE thing was needed to pass a verify_flow_info()
called from commit_edge_insertions() but it's probably not necessary
anymore now that I commit edge inserts manually (to work around other
verify_flow_info() errors).

FWIW the patch doesn't bootstrap, and I'm still trying to figure out
what the problem is now.


[Bug rtl-optimization/47216] [4.6 Regression] gcc.dg/torture/pr43360.c FAILs with -O -fPIC -fgcse -fgcse-sm -fnon-call-exceptions -fno-tree-dse

2011-01-18 Thread stevenb.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47216

--- Comment #7 from stevenb.gcc at gmail dot com stevenb.gcc at gmail dot com 
2011-01-18 21:42:50 UTC ---
Resolved alright -- but including tree-flow.h in emit-rtl.c??? :-(