[Bug bootstrap/54128] [4.8 Regression] GCC does not bootstrap on little endian mips due to mis-compare on tree-data-ref.c

2012-12-21 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #17 from Jakub Jelinek jakub at gcc dot gnu.org 2012-12-21 
19:31:58 UTC ---

Fixed then.


[Bug middle-end/54120] [4.8 Regression] FAIL: gfortran.fortran-torture/execute/random_2.f90 execution

2012-12-22 Thread jakub at gcc dot gnu.org


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



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2012-12-22 
23:06:42 UTC ---

Can you please attach random.i and what exact gcc options were used to compile

random.c ?


[Bug inline-asm/55775] [4.8 Regression] ICE when building pari

2012-12-27 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||FIXED



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2012-12-27 
08:45:48 UTC ---

Fixed.


[Bug java/55764] [4.8 Regression] ICE when building frysk

2012-12-27 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



   Priority|P3  |P5


[Bug tree-optimization/55831] ICE: verify_flow_info failed

2012-12-31 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |ASSIGNED

   Last reconfirmed||2012-12-31

 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org

   |gnu.org |

 Ever Confirmed|0   |1



--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2012-12-31 
14:34:11 UTC ---

Created attachment 29065

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29065

gcc48-pr55831.patch



Untested fix.


[Bug tree-optimization/55831] [4.8 Regression] ICE: verify_flow_info failed

2012-12-31 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



   Target Milestone|--- |4.8.0

Summary|ICE: verify_flow_info   |[4.8 Regression] ICE:

   |failed  |verify_flow_info failed



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2012-12-31 
15:19:57 UTC ---

Started with http://gcc.gnu.org/viewcvs?root=gccview=revrev=193882


[Bug tree-optimization/55831] [4.8 Regression] ICE: verify_flow_info failed

2012-12-31 Thread jakub at gcc dot gnu.org


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



--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2012-12-31 
15:24:29 UTC ---

Though, with (a = a + 1) instead of a++ it started ICEing with

http://gcc.gnu.org/viewcvs?root=gccview=revrev=167378

or

http://gcc.gnu.org/viewcvs?root=gccview=revrev=167377 .


[Bug tree-optimization/55831] [4.8 Regression] ICE: verify_flow_info failed

2012-12-31 Thread jakub at gcc dot gnu.org


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



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2012-12-31 
23:50:06 UTC ---

Author: jakub

Date: Mon Dec 31 23:50:00 2012

New Revision: 194764



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=194764

Log:

PR tree-optimization/55831

* tree-vect-loop.c (get_initial_def_for_induction): Use

gsi_after_labels instead of gsi_start_bb.



* gcc.dg/pr55831.c: New test.



Added:

trunk/gcc/testsuite/gcc.dg/pr55831.c

Modified:

trunk/gcc/ChangeLog

trunk/gcc/testsuite/ChangeLog

trunk/gcc/tree-vect-loop.c


[Bug tree-optimization/55831] [4.8 Regression] ICE: verify_flow_info failed

2013-01-01 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|ASSIGNED|RESOLVED

 Resolution||FIXED



--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-01 
13:59:00 UTC ---

Fixed.


[Bug sanitizer/55844] -fsanitize=address -Os -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 doesn't work

2013-01-01 Thread jakub at gcc dot gnu.org


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



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-02 
07:30:55 UTC ---

http://gcc.gnu.org/ml/gcc-patches/2012-12/msg01179.html


[Bug rtl-optimization/55838] [4.6/4.7/4.8 Regression] ICE in extract_insn (unrecognizable insn) with -O -funroll-loops

2013-01-02 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org,

   ||rakdver at gcc dot gnu.org



--- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-02 
08:24:34 UTC ---

I wonder if that isn't unnecessarily pessimizing, plus it won't catch all cases

anyway, steps can be added etc. afterwards, in the extend_mode/comp_mode.



The following fixes the ICE for me too, the second hunk is supposedly not

enough, because in some places afterwards we e.g. count inc from iv0.step and

iv1.step directly, plus for say comp_mode SImode and mode QImode with iv0.step

256 we supposedly want to bail out early (infinite loop or zero iterations).



--- gcc/loop-iv.c.jj2012-10-22 08:42:25.0 +0200

+++ gcc/loop-iv.c2013-01-02 09:17:42.215591646 +0100

@@ -2406,6 +2406,9 @@ iv_number_of_iterations (struct loop *lo

   iv1.step = const0_rtx;

 }



+  iv0.step = lowpart_subreg (mode, iv0.step, comp_mode);

+  iv1.step = lowpart_subreg (mode, iv1.step, comp_mode);

+

   /* This is either infinite loop or the one that ends immediately, depending

  on initial values.  Unswitching should remove this kind of conditions. 

*/

   if (iv0.step == const0_rtx  iv1.step == const0_rtx)

@@ -2516,6 +2519,7 @@ iv_number_of_iterations (struct loop *lo

 step = simplify_gen_unary (NEG, comp_mode, iv1.step, comp_mode);

   else

 step = iv0.step;

+  step = lowpart_subreg (mode, step, comp_mode);

   delta = simplify_gen_binary (MINUS, comp_mode, iv1.base, iv0.base);

   delta = lowpart_subreg (mode, delta, comp_mode);

   delta = simplify_gen_binary (UMOD, mode, delta, step);


[Bug middle-end/55832] [4.8 Regression] ICE in fold_convert_loc, at fold-const.c:1967

2013-01-02 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |ASSIGNED

 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org

   |gnu.org |



--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-02 
09:07:06 UTC ---

Created attachment 29072

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29072

gcc48-pr55832.patch



Indeed, and omit_one_operand_loc can deal with converting integer_zero_node to

a zero vector, but can't cope with converting integer_one_node into a constant

boolean true vector.



I've slightly adjusted the testcase, so that it at least doesn't violate strict

aliasing, unfortunately without the uninitialized c it doesn't trigger.  And I

couldn't find a way to create ABS_EXPR of vectors using vector types directly.


[Bug sanitizer/55561] TSAN: Fortran/OMP yields false positives

2013-01-02 Thread jakub at gcc dot gnu.org


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



--- Comment #30 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-02 
09:43:29 UTC ---

The formatting in the patch is wrong (multiple issues).



I don't see a point in the __atomic_load_n (addr, MEMMODEL_RELAXED), for

aligned ints or pointers the loads are atomic on all architectures libgomp is

supported on, after all kernel is also using just a normal load in the futex

syscall, not __atomic_load_n (which expands to the normal load only anyway).


[Bug middle-end/23868] [4.6/4.7/4.8 regression] builtin_apply uses wrong mode for multi-hard-register return values

2013-01-02 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



   Priority|P2  |P4

 CC||jakub at gcc dot gnu.org



--- Comment #22 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-02 
17:55:14 UTC ---

SH is neither primary nor secondary target.


[Bug sanitizer/55844] -fsanitize=address -Os -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 doesn't work

2013-01-02 Thread jakub at gcc dot gnu.org


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



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-02 
21:07:21 UTC ---

Could you please do an extra merge soon, even before switching the default?

You've raised some cases where on ubuntu _Unwind_* based backtrace wasn't

accurrate, it would be nice to check it out on other distros and find out the

reason.  BTW, glibc backtrace(3) on i?86 (32-bit only) uses a combination of

_Unwind_* based backtrace for as long as unwind info is provided, and then

grabs ebp from the unwind info at the outermost frame before unwind info isn't

provided, and from there attempts to use the fast backtrace method (for cases

where older i?86 code when gcc still didn't default to asynchronous unwind

tables on i?86 calls newer code where gcc defaults to it).  On x86_64 this

isn't done, as asynchronous unwind tables have been the default basically for

the whole support of the architecture.


[Bug middle-end/55198] [4.8 Regression] libquadmath/math/fmaq.c:233:7: internal compiler error

2013-01-02 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 CC||jakub at gcc dot gnu.org

 Resolution||FIXED



--- Comment #9 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-02 
21:17:01 UTC ---

Assuming fixed.


[Bug debug/54402] [4.8 Regression] var-tracking does not scale

2013-01-03 Thread jakub at gcc dot gnu.org


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



--- Comment #26 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-03 
08:52:17 UTC ---

Author: jakub

Date: Thu Jan  3 08:52:10 2013

New Revision: 194834



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=194834

Log:

PR debug/54402

* params.def (PARAM_MAX_VARTRACK_REVERSE_OP_SIZE): New param.

* var-tracking.c (reverse_op): Don't add reverse ops to

VALUEs that have already

PARAM_VALUE (PARAM_MAX_VARTRACK_REVERSE_OP_SIZE) or longer

locs list.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/params.def

trunk/gcc/var-tracking.c


[Bug middle-end/55832] [4.8 Regression] ICE in fold_convert_loc, at fold-const.c:1967

2013-01-03 Thread jakub at gcc dot gnu.org


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



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-03 
09:02:51 UTC ---

Author: jakub

Date: Thu Jan  3 09:02:41 2013

New Revision: 194836



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=194836

Log:

PR tree-optimization/55832

* fold-const.c (fold_binary_loc): For ABS_EXPRx = 0 and

ABS_EXPRx  0 folding use constant_boolean_node instead of

integer_{one,zero}_node.



* gcc.c-torture/compile/pr55832.c: New test.



Added:

trunk/gcc/testsuite/gcc.c-torture/compile/pr55832.c

Modified:

trunk/gcc/ChangeLog

trunk/gcc/fold-const.c

trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/55838] [4.6/4.7/4.8 Regression] ICE in extract_insn (unrecognizable insn) with -O -funroll-loops

2013-01-03 Thread jakub at gcc dot gnu.org


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



--- Comment #12 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-03 
09:05:49 UTC ---

Author: jakub

Date: Thu Jan  3 09:05:43 2013

New Revision: 194837



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=194837

Log:

PR rtl-optimization/55838

* loop-iv.c (iv_number_of_iterations): Call lowpart_subreg on

iv0.step, iv1.step and step.



* gcc.dg/pr55838.c: New test.



Added:

trunk/gcc/testsuite/gcc.dg/pr55838.c

Modified:

trunk/gcc/ChangeLog

trunk/gcc/loop-iv.c

trunk/gcc/testsuite/ChangeLog


[Bug middle-end/55832] [4.8 Regression] ICE in fold_convert_loc, at fold-const.c:1967

2013-01-03 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|ASSIGNED|RESOLVED

 Resolution||FIXED



--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-03 
09:09:58 UTC ---

Fixed.


[Bug rtl-optimization/55838] [4.6/4.7 Regression] ICE in extract_insn (unrecognizable insn) with -O -funroll-loops

2013-01-03 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



  Known to work||4.8.0

Summary|[4.6/4.7/4.8 Regression]|[4.6/4.7 Regression] ICE in

   |ICE in extract_insn |extract_insn

   |(unrecognizable insn) with  |(unrecognizable insn) with

   |-O -funroll-loops   |-O -funroll-loops

  Known to fail|4.8.0   |



--- Comment #13 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-03 
09:10:46 UTC ---

Fixed for trunk so far.


[Bug middle-end/55851] [4.8 Regression] ICE in size_binop_loc, at fold-const.c:1385

2013-01-03 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org

  Component|c   |middle-end



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-03 
14:47:37 UTC ---

The C FE is innocent, it has TYPE_SIZE_UNIT nop_expr sizetype something.

The problem is in the gimplifier, gimplify_one_sizepos, because sizetype is

types_compatible_p with the ENUMERAL_TYPE (with -m32), replaces the sizetype

typed TYPE_SIZE_UNIT with the enumeral one.  So, either we'd need to special

case this in gimplify_one_sizepos or so and if it turns an INTEGER_TYPE expr

into something with different type TREE_CODE, do something (what exactly?  If

we turn it into a NOP_EXPR of the VAR_DECL, it will not satisfy

is_gimple_sizepos and we'll try to regimplify it again and again, or shall we

adjust is_gimple_sizepos too to allow that special case of a NOP_EXPR of

is_gimple_sizepos if the types are compatible?).  Or adjust whatever code is

assuming that TYPE_SIZE_UNIT must be INTEGER_TYPE.


[Bug inline-asm/55864] Optimization cause asm code to wrong behaviour

2013-01-03 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 CC||jakub at gcc dot gnu.org

 Resolution||INVALID



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-03 
15:29:27 UTC ---

The testcase is buggy.  You aren't telling the compiler you are modifying the

%mm0 and %mm1 registers (why you do anything with MMX at this point BTW? that

is simply a very bad idea), and even if you did, you can't expect the registers

to keep their values in between the different inline asm statements, you aren't

using the required emms for MMX (and not telling the compiler that you are

invalidating the whole i387 register state), and the operands of the second

inline asm are completely bogus.


[Bug middle-end/55851] [4.8 Regression] ICE in size_binop_loc, at fold-const.c:1385

2013-01-03 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |ASSIGNED

 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org

   |gnu.org |



--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-03 
15:32:16 UTC ---

Created attachment 29078

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29078

gcc48-pr55851.patch



Untested patch (which I don't like very much, but we can't even use something

like get_initialized_tmp_var which would strip the cast as useless too).


[Bug libstdc++/55866] New: [4.8 Regression] #include auto_ptr.h in C++11 mode

2013-01-03 Thread jakub at gcc dot gnu.org


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



 Bug #: 55866

   Summary: [4.8 Regression] #include auto_ptr.h in C++11 mode

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: libstdc++

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: ja...@gcc.gnu.org





echo '#include auto_ptr.h' | g++ -std=gnu++0x -S -o /tmp/a.s -xc++ -

worked in 4.7, but doesn't work any longer in 4.8.  Apparently the snapper

package does this in one of the translation units (no idea why).

Is that an error in the package and it isn't supposed to include that header,

or is that something to fix on the libstdc++ side?

The problem started with

http://gcc.gnu.org/viewcvs?root=gccview=revrev=190109

where auto_ptr.h relies on a couple of headers it doesn't include itself (so

_Lock_policy, __shared_count etc. aren't defined).


[Bug libstdc++/55866] [4.8 Regression] #include auto_ptr.h in C++11 mode

2013-01-03 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||INVALID



--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-03 
17:10:07 UTC ---

I have no problem with that, just noticed this during mass rebuild with gcc 4.8

and wanted to double check where the bug is.


[Bug tree-optimization/55875] New: [4.8 Regression] IVopts caused miscompilation

2013-01-04 Thread jakub at gcc dot gnu.org


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



 Bug #: 55875

   Summary: [4.8 Regression] IVopts caused miscompilation

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: tree-optimization

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: ja...@gcc.gnu.org





The following testcase is miscompiled at -O3 on x86_64-linux starting with

http://gcc.gnu.org/viewcvs?root=gccview=revrev=192989

(ok, that revision doesn't compile, needs r192900 follow-up).



struct A

{

  short int a1;

  unsigned char a2;

  unsigned int a3;

};



struct B

{

  unsigned short b1;

  const A *b2;

};



B b;



__attribute__((noinline, noclone))

int foo (unsigned x)

{

  __asm volatile ( : +r (x) : : memory);

  return x;

}



inline void

bar (const int )

{

}



__attribute__((noinline)) void

baz ()

{

  const A *a = b.b2;

  unsigned int i;

  unsigned short n = b.b1;

  for (i = 0; i  n; ++i)

if (a[i].a1 == 11)

  {

if (i  0  (a[i - 1].a2  1))

  continue;

bar (foo (2));

return;

  }

}



int

main ()

{

  A a[4] = { { 10, 0, 0 }, { 11, 1, 0 }, { 11, 1, 0 }, { 11, 1, 0 } };

  b.b1 = 4;

  b.b2 = a;

  baz ();

  return 0;

}



In *.slp we have:

  bb 5:

  if (i_21 != 0)

goto bb 6;

  else

goto bb 7;



  bb 6:

  _11 = i_21 + 4294967295;

  _12 = (long unsigned int) _11;

  _13 = _12 * 8;

  _14 = a_4 + _13;

  _15 = _14-a2;

but ivopts turns that into:

  bb 5:

  i_25 = (unsigned int) ivtmp.9_31;

  if (i_25 != 0)

goto bb 6;

  else

goto bb 7;



  bb 6:

  _28 = ivtmp.9_31 * 8;

  _27 = a_4 + _28;

  _26 = _27 + 34359738362;

  _15 = MEM[base: _26, offset: 0B];

which is wrong, i_21 + -1U wrapped around (and wasn't executed for i_21 being

0), while 34359738362 is 0xULL * 8 + 2, thus it ignores the wrapping

and does what the original code would do for

  _12 = (long unsigned int) i_21;

  _77 = _12 + 4294967295;

  _13 = _77 * 8;

i.e. as if the -1U addition was done in the wider precision.


[Bug tree-optimization/55875] [4.8 Regression] IVopts caused miscompilation

2013-01-04 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



   Priority|P3  |P1

 CC||hubicka at gcc dot gnu.org

   Target Milestone|--- |4.8.0


[Bug tree-optimization/55875] [4.8 Regression] IVopts caused miscompilation

2013-01-04 Thread jakub at gcc dot gnu.org


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



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-04 
12:24:12 UTC ---

ssa name _12

  type long unsigned int

  base 4294967295

  step 1

ssa name _13

  type long unsigned int

  base 34359738360

  step 8

ssa name _14

  type const struct A *

  base a_4 + 34359738360

  step 8

  base object (void *) a_4



all look wrong to me, it ignores the wrapping in the narrower type.



OT, I wonder why number of iterations analysis doesn't figure out smaller

number:

Analyzing # of iterations of loop 1

  exit condition [1, + , 1]  (unsigned int) n_5

  bounds on difference of bases: 0 ... 4294967294

  result:

# of iterations (unsigned int) n_5 + 4294967295, bounded by 4294967294

The loop condition is:

  i_18 = i_21 + 1;

  if (i_18  _20)

and _20 is:

  _20 = (unsigned int) n_5;

where

  short unsigned int n;

thus, I'd thought we should figure out from that that i_18 will be at most

0x (highest possible n_5 is 0x).

But that is 4.9 material likely, while the ivopts? bug is a severe 4.8 issue.


[Bug c++/55877] New: [4.6/4.7/4.8 Regression] Anon visibility issues

2013-01-04 Thread jakub at gcc dot gnu.org


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



 Bug #: 55877

   Summary: [4.6/4.7/4.8 Regression] Anon visibility issues

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c++

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: ja...@gcc.gnu.org





typedef struct {

  typedef enum { X, Y } A;

  typedef struct { } B;

  struct C { };

} D;



void foo (D) {}

void foo (D::A) {}

void foo (D::B) {}

void foo (D::C) {}



Starting with PR54883 the foo (D::A) gets anon visibility, in 4.4 all 4 foo

functions had default visibility, starting with 4.5 the last two had anon

visibility.


[Bug c++/55877] [4.6/4.7/4.8 Regression] Anon visibility issues

2013-01-04 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



   Target Milestone|--- |4.6.4


[Bug c/25702] feature request: generate a warning for sizeof on a pointer

2013-01-04 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #9 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-04 
15:55:13 UTC ---

See -Wsizeof-pointer-memaccess warning added in GCC 4.8.  Currently it only

warns about a handful of builtin functions there is no attribute to annotate

user functions if they want similar behavior, but at least for various

memory/string functions, s*printf etc. you'll get warnings.


[Bug c++/55877] [4.6 Regression] Anon visibility issues

2013-01-04 Thread jakub at gcc dot gnu.org

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

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-04 
17:07:55 UTC ---
The reason for listing 4.6 was that the PR54883 change has been applied to 4.6
branch fairly recently, making it for the enum case a recent 4.6 regression.

BTW, what about:
typedef struct {
  typedef enum { X, Y } A;
  typedef struct { } B;
  struct C {
static void fn1 (B) { }
static void fn2 (C) { }
  };
} D;

void foo (D) {}
void foo (D::A) {}
void foo (D::B) {}
void foo (D::C) {}
void *p = (void *) D::C::fn1;
void *q = (void *) D::C::fn2;

which is still rejected even with this patch?
error: anonymous type with no linkage used to declare function ‘static
voidanonymous struct::C::fn1(anonymous struct::B)’ with linkage
[-fpermissive]
and similarly for fn2.  If typedef struct { is changed to typedef struct D {
on the first line, it compiles just fine and everything is exported.


[Bug fortran/55852] [4.6/4.7/4.8 regression] internal compiler error: in gfc_build_intrinsic_call, at fortran/expr.c:4647

2013-01-04 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



   Priority|P3  |P4

 CC||jakub at gcc dot gnu.org


[Bug c++/55878] New: [4.7/4.8 Regression] --enable-checking=yes rejection of typeid

2013-01-04 Thread jakub at gcc dot gnu.org


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



 Bug #: 55878

   Summary: [4.7/4.8 Regression] --enable-checking=yes rejection

of typeid

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c++

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: ja...@gcc.gnu.org

CC: ja...@gcc.gnu.org





// { dg-do compile }

// { dg-options -std=gnu++0x }



#include typeinfo



struct S;



template typename T

static bool fn (S *s)

{

  return typeid (*s) == typeid (T);

}



struct S

{

};



bool x = fnS (__null);



is rejected with --enable-checking=yes compilers (but accepted with release

checking compilers), starting with

http://gcc.gnu.org/viewcvs?root=gccview=revrev=173679



Is this code valid C++ or not, i.e. is the FE allowed to warn about incomplete

types even in the uninstantiated template?


[Bug libstdc++/55594] [4.8 Regression] -Wa,-nH incorrectly added to compile line of all targets

2013-01-06 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-06 
15:10:01 UTC ---

So, can we restrict the -Wa,-nH check to *-*-solaris*, or do also say -Wa,-V

or whatever with Solaris as prints version and scan its output?


[Bug driver/55884] [4.8 Regression] FAIL: libgomp.fortran/omp_parse3.f90 -O0 (test for excess errors)

2013-01-07 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||burnus at gcc dot gnu.org,

   ||jakub at gcc dot gnu.org



--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-07 
12:50:56 UTC ---

Guess related to -fintrinsic-module-path.

In some spots it still has the right argument:

-fintrinsic-modules-path /test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libgomp

but in other spots that argument is gone:

-fintrinsic-modules-path -B ...

thus -B is taken as -fintrinsic-modules-path argument and the original -B

argument is considered another source file.



Can you try perhaps:

--- libgomp/testsuite/libgomp.fortran/fortran.exp2012-12-20

11:38:48.663282599 +0100

+++ libgomp/testsuite/libgomp.fortran/fortran.exp2013-01-07

13:45:51.557361907 +0100

@@ -14,7 +14,7 @@ set quadmath_library_path ../libquadmat

 dg-init



 if { $blddir !=  } {

-lappend ALWAYS_CFLAGS additional_flags=-fintrinsic-modules-path

${blddir}

+lappend ALWAYS_CFLAGS additional_flags=-fintrinsic-modules-path${blddir}

 # Look for a static libgfortran first.

 if [file exists ${blddir}/${lang_library_path}/libgfortran.a] {

 set lang_test_file ${lang_library_path}/libgfortran.a



?  Though, I'd say using Joined Separate for such named option is just wrong,

it is fine for single letter options like -B, -A, -D, -U etc., but for options

of this kind I think it would be much better if it was

fintrinsic-modules-path

Fortran RejectNegative Separate

Specify where to find the compiled intrinsic modules



fintrinsic-modules-path=

Fortran RejectNegative Joined

Specify where to find the compiled intrinsic modules



instead and handle OPT_fintrinsic_modules_path_ the same as

OPT_fintrinsic_modules_path.  But given that the option has been added already

back in 2007, it is probably too late for that.


[Bug bootstrap/54283] [4.8 regression] build tools don't run after cxx-conversion merge

2013-01-07 Thread jakub at gcc dot gnu.org


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



--- Comment #17 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-07 
12:55:39 UTC ---

But that is not a requirement.  The requirement is using a C++ compiler that

works out of the box (compiler configured in a path where its shared libraries

aren't found by the dynamic linker isn't), or making sure through

LD_LIBRARY_PATH or tweaking spec (to add -rpath) that the compiler works out of

the box, or compiler which supports -static-libstdc++.


[Bug bootstrap/54283] [4.8 regression] build tools don't run after cxx-conversion merge

2013-01-07 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||INVALID



--- Comment #18 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-07 
13:01:38 UTC ---

.


[Bug target/55894] No constant propagation in Intel intrinsics

2013-01-07 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-07 
14:25:33 UTC ---

The reason why it doesn't happen during combine is that the insns don't allow

constants, they require loads from memory, so while the compiler is aware

of the folded constant, e.g. in the g function:

(insn 12 7 15 2 (set (reg/i:V2DF 21 xmm0)

(subreg:V2DF (reg:V2DI 65 [ D.4526 ]) 0)) pr55894.c:16 1157

{*movv2df_internal}

 (expr_list:REG_DEAD (reg:V2DI 65 [ D.4526 ])

(expr_list:REG_EQUAL (const_vector:V2DF [

(const_double:DF +QNaN [+QNaN])

(const_double:DF +QNaN [+QNaN])

])

(nil

it fails to match and thus isn't actually used in the code.  A pass that would

see you load a constant from memory, do some transformations on it which are

all foldable by the compiler and transforming that into just load of a

different constant could handle this (or do it in combine?), but the problem

with that is that it could in theory increase the constant pool too much.


[Bug middle-end/54120] [4.8 Regression] FAIL: gfortran.fortran-torture/execute/random_2.f90 execution

2013-01-07 Thread jakub at gcc dot gnu.org


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



--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-07 
14:51:26 UTC ---

I don't see any differences in assembly, when I compile either version of

random.i with -std=gnu99 -fcx-fortran-rules -g -O2 with a r189365 vs. r189366

x86_64-linux - hppa2.0w-hp-hpux11.11 cross.  Can try i686-linux -

hppa2.0w-hp-hpux11.11 cross in case it is HWINT related...


[Bug middle-end/54120] [4.8 Regression] FAIL: gfortran.fortran-torture/execute/random_2.f90 execution

2013-01-07 Thread jakub at gcc dot gnu.org


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



--- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-07 
16:34:14 UTC ---

Ah, ok, seems indeed to be HWI size related and also (due to an earlier bug)

related to the revision you've mentioned.

So, with an i686-linux - hppa2.0w-hp-hpux11.11 cross this is reproduceable

with -O2 on:

extern unsigned int *kiss_seed_1;

extern unsigned int *kiss_seed_2;

unsigned int kiss_random_kernel(unsigned int * seed);



void

foo (double *x)

{

  unsigned long long mask, kiss = ((unsigned long long) kiss_random_kernel

(kiss_seed_1))  32;

  kiss += kiss_random_kernel (kiss_seed_2);

  mask = ~ (unsigned long long) 0u  (64 - 53);

  kiss = kiss  mask;

  *x = (double) kiss * (0x1.p-64);

}



and the problem is that starting with r189366 VRP incorrectly does:

   kiss_9 = kiss_8  0xf800;

-  D.1358_10 = (double) kiss_9;

+  D.1363_17 = (signed int) kiss_9;

+  D.1358_10 = (double) D.1363_17;



The bugs seem to be in simplify_float_conversion_using_ranges and

range_fits_type_p.  The simplify_float_conversion_using_ranges bug (now just

code consistency issue, before r189366 a real bug) is that the second

can_float_p is tested for != 0 (implicitly) instead of != CODE_FOR_nothing.

Starting with r189366 it doesn't make a real difference, before that

CODE_FOR_nothing was some big number and this fact hid the other bug.



From the kiss_9 assignment, VRP determines vr to be

[0, 0xf800]

(in unsigned long long type).



And now the bug is that while range_fits_type_p (vr, 8, 0) and

range_fits_type_p (vr, 64, 0) correctly return false, such big 64-bit range

really doesn't fit into signed 8-bit or signed 64-bit range,

range_fits_type_p (vr, 16, 0) and range_fits_type_p (vr, 32, 0) incorrectly

return true - and for floatsidf2 there is a pattern, which is why we miscompile

it.


[Bug middle-end/54120] [4.8 Regression] FAIL: gfortran.fortran-torture/execute/random_2.f90 execution

2013-01-07 Thread jakub at gcc dot gnu.org


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



--- Comment #12 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-07 
17:27:56 UTC ---

Created attachment 29100

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29100

gcc48-pr54120.patch



So, I wrote a fix against r189366, only to find out that Richard Sandiford

already fixed it the same way (just different comment):

http://gcc.gnu.org/viewcvs?root=gccview=revrev=194800



I'm thus attaching just the unimportant other two changes (unimportant because

right now range_fits_type_p is always called with unsigned_p = false (so the

first problem never happens, the issue is that while say unsigned 8-bit

src_type always fits into signed 16-bit, the same isn't true for signed 8-bit

src_type and unsigned 16-bit - if min or max is negative in the signed type, it

won't fit).

And the second issue is after r189366 only pure consistency issue, as

CODE_FOR_nothing is always 0.



I'd say after with r194800 or later you shouldn't get this failure.


[Bug driver/55884] [4.8 Regression] FAIL: libgomp.fortran/omp_parse3.f90 -O0 (test for excess errors)

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
08:13:02 UTC ---

On HP-UX or Linux?  The test is guarded with

! { dg-require-effective-target tls_runtime }

does the OS have assembly/linker and runtime TLS support?

Can you attach libgomp.log ?


[Bug sanitizer/55844] -fsanitize=address -Os -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 doesn't work

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
08:14:12 UTC ---

Author: jakub

Date: Tue Jan  8 08:14:04 2013

New Revision: 195005



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=195005

Log:

PR sanitizer/55844

* c-c++-common/asan/null-deref-1.c: Add -fno-shrink-wrap to

dg-options.



Modified:

trunk/gcc/testsuite/ChangeLog

trunk/gcc/testsuite/c-c++-common/asan/null-deref-1.c


[Bug middle-end/55851] [4.8 Regression] ICE in size_binop_loc, at fold-const.c:1385

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
08:32:21 UTC ---

Author: jakub

Date: Tue Jan  8 08:32:12 2013

New Revision: 195006



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=195006

Log:

PR middle-end/55851

* fold-const.c (int_binop_types_match_p): Allow all INTEGRAL_TYPE_P

types instead of just INTEGER_TYPE types.



* gcc.c-torture/compile/pr55851.c: New test.



Added:

trunk/gcc/testsuite/gcc.c-torture/compile/pr55851.c

Modified:

trunk/gcc/ChangeLog

trunk/gcc/fold-const.c

trunk/gcc/testsuite/ChangeLog


[Bug middle-end/54120] [4.8 Regression] FAIL: gfortran.fortran-torture/execute/random_2.f90 execution

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #14 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
08:33:50 UTC ---

Author: jakub

Date: Tue Jan  8 08:33:43 2013

New Revision: 195007



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=195007

Log:

PR tree-optimization/54120

* tree-vrp.c (range_fits_type_p): Don't allow

src_precision  precision from signed vr to unsigned_p

if vr-min or vr-max is negative.

(simplify_float_conversion_using_ranges): Test can_float_p

against CODE_FOR_nothing.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/tree-vrp.c


[Bug tree-optimization/55890] [4.7 Regression] calling a builtin func through a cast triggers an ICE

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
08:38:58 UTC ---

Author: jakub

Date: Tue Jan  8 08:38:50 2013

New Revision: 195008



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=195008

Log:

PR middle-end/55890

* tree-ssa-ccp.c (evaluate_stmt): Use gimple_call_builtin_p.



* gcc.dg/torture/pr55890-3.c: New test.



Added:

trunk/gcc/testsuite/gcc.dg/torture/pr55890-3.c

Modified:

trunk/gcc/ChangeLog

trunk/gcc/testsuite/ChangeLog

trunk/gcc/tree-ssa-ccp.c


[Bug sanitizer/55844] -fsanitize=address -Os -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 doesn't work

2013-01-08 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
08:44:44 UTC ---

Worked around, likely going to be fixed with switch to unwind based backtrace

for fatal backtraces.


[Bug middle-end/55851] [4.8 Regression] ICE in size_binop_loc, at fold-const.c:1385

2013-01-08 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|ASSIGNED|RESOLVED

 Resolution||FIXED



--- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
08:45:27 UTC ---

Fixed.


[Bug middle-end/54120] [4.8 Regression] FAIL: gfortran.fortran-torture/execute/random_2.f90 execution

2013-01-08 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||FIXED



--- Comment #15 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
09:08:58 UTC ---

Fixed.


[Bug fortran/55868] [4.8 Regression] gfortran generates for CLASS(*) __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems

2013-01-08 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
09:13:12 UTC ---

I'd say GFC_PREFIX wouldn't improve this, I'd keep using $ unless

NO_DOLLAR_IN_LABEL, otherwise fallback to . if NO_DOT_IN_LABEL and as last

fallback use _ in this case.


[Bug fortran/55868] [4.8 Regression] gfortran generates for CLASS(*) __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
09:41:29 UTC ---

Fine with me.  Just a note, sprintf (dt_name, %s, STAR); would be better

written as strcpy (dt_name, STAR);


[Bug rtl-optimization/55829] [4.8 Regression] ICE: in curr_insn_transform, at lra-constraints.c:3069 with -msse3

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
09:58:05 UTC ---

Created attachment 29103

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29103

gcc48-pr55829.patch



Yeah, comparing the vec_dupv2df and *vec_concatv2df patterns shows that for the

former we accept for sse3 but not avx x - 0, x - x and x - m, while for the

latter only x - 0, x and x - m, 1 and not x - x, 1, when movddup has 2

different register arguments.  With this change it doesn't ICE anymore, even

when it actually doesn't emit that form of movddup (the vec_concat of 2x

(reg:DF 62) pseudo where (reg:DF 62) is assigned r12 (it is used in the

following loop which contains calls), it is LRA reloaded into two stores of r12

into mem, once loaded into xmm1 and used from mem, i.e. for whatever reason the

x - 0, m alternative is chosen, but postreload then turns it into movddup with

both arguments xmm1 (x - 0, 0).



I think this patch can be useful and does give the RA more freedom, but it is

unclear whether it doesn't make some LRA bug latent.  Vlad?


[Bug rtl-optimization/55829] [4.8 Regression] ICE: in curr_insn_transform, at lra-constraints.c:3069 with -msse3

2013-01-08 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org,

   ||uros at gcc dot gnu.org



--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
10:02:16 UTC ---

BTW, there is a slight inconsistency between the two patterns, the first

pattern uses sselog1 type for both the unpckldp %0, %0 and %vmovddup %1, %0 and

V2DFmode mode attribute, while the second pattern uses sselog type for both of

those and DFmode mode attribute for the movddup case.


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

2013-01-08 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org,

   ||steven at gcc dot gnu.org



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
11:03:50 UTC ---

Broken by Steven's PCH changes.

http://gcc.gnu.org/viewcvs?root=gccview=revrev=188856

http://gcc.gnu.org/viewcvs?root=gccview=revrev=189482



(from r188856 to r189481 this ICEd, afterwards it just results in assembly

comparison differences.

Can be reproduced even on x86_64-linux, e.g. with

make check-gcc RUNTESTFLAGS='--target_board=unix/-m32/-gstabs pch.exp=decl-3*'



The saving/restoring of assembly directives has been there clearly for a

reason, so needs to be replaced or the changes reverted.



Not sure if stabs + PCH warrants a P1 regression though.


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

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
11:27:12 UTC ---

The problem is that dbxout.c (unlike dwarf2out.c; not sure about other debug

backends) emits assembly immediately into asm_out_file, pretty much everywhere,

instead of creating data structures from it and emitting everything only during

the finish debughook.  So, if you'd like to avoid reversion of the patch, I'm

afraid you'd pretty much need to implement the same thing, at least for dbxout

(that, in between pch_init (but not earlier, you don't want to duplicate the

stabs created before that) and pch_write the stabs will be say queued into some

GC memory block and that GC memory block will be printed into assembly upon

reading of pch or so.  I doubt fmemopen or similar is portable enough, so you'd

need to rewrite all the dbxout.c code that right now uses fwrite/fputc/putc

etc. to use some other interfaces and conditionally either append to the GC

string, or write into asm_out_file.  Or rewrite dbxout.c to queue up

everything, not sure if it wouldn't break anything if emitted at the end of

assembly though.


[Bug middle-end/55889] [4.8 Regression] ICE: in move_op_ascend, at sel-sched.c:6153 with -fschedule-insns -fselective-scheduling

2013-01-08 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
12:19:16 UTC ---

Can't reproduce (with a cross).  Is this when compiling 32-bit or 64-bit?  What

kind of CPU tuning by default?


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

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
12:42:06 UTC ---

dbxout.c already defines a handle_pch hook, so it is apparently told when

pch_init and write_pch are called, so in theory this could be handled in

dbxout.c only (still, the question is if other debug backends don't have

similar issue).


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

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
13:28:56 UTC ---

Note this isn't limited to dbxout.c, pretty much all *out.c debug backends but

dwarf2out.c suffer from these issues, they all emit assembly immediately, only

dwarf2out.c just creates data structures to be used later on.


[Bug c++/55893] [4.7/4.8 Regression][C++11] runtime segfault with static const object with virtual destructor

2013-01-08 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org,

   ||jason at gcc dot gnu.org



--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
13:42:30 UTC ---

Caused by http://gcc.gnu.org/PR49673 I believe.  Perhaps instead of testing

whether TYPE_NEEDS_CONSTRUCTING we need to check if the type has non-trivial

destructor (is a user destructor on const qualified vars allowed to store into

the var anywhere?) or just a special case virtual dtors that do change the

vtable pointer?


[Bug c/48418] [4.6/4.7/4.8 Regression] Bit shift operator =

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #9 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
14:44:51 UTC ---

Created attachment 29104

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29104

gcc48-pr48418.patch



Untested fix.  To avoid warning twice, this warns in c_fully_fold_internal

only if orig_op1 isn't INTEGER_CST, but op1 is.  And on the testcase I found

that in 4.8 my SIZEOF_EXPR C++ changes regressed the testcase too.


[Bug tree-optimization/48189] [4.6/4.7/4.8 Regression] ICE: SIGFPE (division by zero) in in predict_loops () at predict.c:991 with --param max-predicted-iterations=0

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
15:02:52 UTC ---

Created attachment 29105

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29105

gcc48-pr48189.patch



I'd say this isn't difficult to solve enough to warrant having it open for

years.


[Bug rtl-optimization/48181] [4.6/4.7/4.8 Regression] wrong code with -O -fgcse --param ira-max-conflict-table-size=0

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
15:16:52 UTC ---

But then, won't the exact same issues potentially happen in very large

functions where ira_conflicts_p isn't also true, because the conflict table

would be too big?  I'd say zero MB conflict table is reasonable parameter

value, it says don't use the conflict table.  If table larger than the param

would be needed, no table is created at all.


[Bug fortran/55341] address-sanitizer and Fortran

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #48 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
17:02:13 UTC ---

Author: jakub

Date: Tue Jan  8 17:01:58 2013

New Revision: 195025



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=195025

Log:

PR fortran/55341

* asan.c (asan_clear_shadow): New function.

(asan_emit_stack_protection): Use it.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/asan.c


[Bug fortran/55341] address-sanitizer and Fortran

2013-01-08 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|ASSIGNED|RESOLVED

 Resolution||FIXED



--- Comment #49 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
17:17:26 UTC ---

Fixed.


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

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
17:51:10 UTC ---

All that to avoid one #include output.h in one file?  That doesn't seem

appropriate to me.  I'm not questioning it is a desirable change, but I'd

reapply it only when all the *out.c backends are converted to emit delayed

info, or when (if ever) a dwarf2 - something else converters are written.


[Bug rtl-optimization/55845] [4.8 Regression] 454.calculix miscompares with -march=btver2 -O3 -ffastmath -fschedule-insns -mvzeroupper for test data run

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
18:00:30 UTC ---

Author: jakub

Date: Tue Jan  8 18:00:10 2013

New Revision: 195028



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=195028

Log:

PR rtl-optimization/55845

* df-problems.c (can_move_insns_across): Stop scanning at

volatile_insn_p source instruction or give up if

across_from .. across_to range contains any volatile_insn_p

instructions.



* gcc.target/i386/pr55845.c: New test.



Added:

trunk/gcc/testsuite/gcc.target/i386/pr55845.c

Modified:

trunk/gcc/ChangeLog

trunk/gcc/df-problems.c

trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/55845] [4.8 Regression] 454.calculix miscompares with -march=btver2 -O3 -ffastmath -fschedule-insns -mvzeroupper for test data run

2013-01-08 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 CC||jakub at gcc dot gnu.org

 Resolution||FIXED



--- Comment #12 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
18:03:48 UTC ---

Fixed.


[Bug tree-optimization/55875] [4.8 Regression] IVopts caused miscompilation

2013-01-08 Thread jakub at gcc dot gnu.org


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



--- Comment #9 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-08 
18:27:44 UTC ---

FYI, the execute/pr55875.c with -O1 started failing with

http://gcc.gnu.org/viewcvs?root=gccview=revrev=138207

aka tuples merge.


[Bug tree-optimization/48189] [4.6/4.7/4.8 Regression] ICE: SIGFPE (division by zero) in in predict_loops () at predict.c:991 with --param max-predicted-iterations=0

2013-01-09 Thread jakub at gcc dot gnu.org


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



--- Comment #9 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-09 
09:00:32 UTC ---

Author: jakub

Date: Wed Jan  9 09:00:22 2013

New Revision: 195046



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=195046

Log:

PR tree-optimization/48189

* predict.c (predict_loops): If max is 0, don't call compare_tree_int.

If nitercst is 0, don't predict the exit edge.



* gcc.dg/pr48189.c: New test.



Added:

trunk/gcc/testsuite/gcc.dg/pr48189.c

Modified:

trunk/gcc/ChangeLog

trunk/gcc/predict.c

trunk/gcc/testsuite/ChangeLog


[Bug tree-optimization/48189] [4.6/4.7 Regression] ICE: SIGFPE (division by zero) in in predict_loops () at predict.c:991 with --param max-predicted-iterations=0

2013-01-09 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



  Known to work||4.8.0

Summary|[4.6/4.7/4.8 Regression]|[4.6/4.7 Regression] ICE:

   |ICE: SIGFPE (division by|SIGFPE (division by zero)

   |zero) in in predict_loops   |in in predict_loops () at

   |() at predict.c:991 with|predict.c:991 with --param

   |--param |max-predicted-iterations=0

   |max-predicted-iterations=0  |



--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-09 
09:03:38 UTC ---

Fixed on the trunk so far.


[Bug fortran/55916] New: Alignment issues with real(16) on i686

2013-01-09 Thread jakub at gcc dot gnu.org


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



 Bug #: 55916

   Summary: Alignment issues with real(16) on i686

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: fortran

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: ja...@gcc.gnu.org





The following testcase with -m32 -msse4 -g -O3 -fno-inline may segfault

(depending on whether malloc returns just 8-byte or 16-byte aligned pointer).



  real(16), allocatable ::  (:)

  real(16) :: x(10)

  integer :: i,n=10



  allocate((n))

  do i = 1,n

(i) = 8.0

  enddo

  call foo ()

  deallocate()

contains

  subroutine foo ()

real(16), allocatable :: (:)

(1) = (1) + 1

  end subroutine

end



The problem is that __float128 aka real(16) has alignment 128 bits, but on

i686-linux malloc only guarantees 64 bit alignment (2 * sizeof (void *) byte

alignment).  As __float128 is outside of the scope of C/C++, this is not a bug

on the C library side.

Guess for real(16) allocatables or any allocatables that require alignment

bigger than that of standard types Fortran should use posix_memalign (or

perhaps some libgfortran wrapper) that will be passed not just the size to

allocate, but also required alignment.


[Bug c/48418] [4.6/4.7/4.8 Regression] Bit shift operator =

2013-01-09 Thread jakub at gcc dot gnu.org


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



--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-09 
14:51:17 UTC ---

Author: jakub

Date: Wed Jan  9 14:51:09 2013

New Revision: 195051



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=195051

Log:

PR c/48418

* c-common.c (c_fully_fold_internal): Warn for LSHIFT_EXPR and

RSHIFT_EXPR, if orig_op1 isn't INTEGER_CST, op1 is INTEGER_CST

and is either negative or bigger or equal to type precision

of the first operand.



* typeck.c (cp_build_binary_op): For LSHIFT_EXPR and RSHIFT_EXPR,

call maybe_constant_value for the negative or too big shift

count warnings.



* c-c++-common/pr48418.c: New test.



Added:

trunk/gcc/testsuite/c-c++-common/pr48418.c

Modified:

trunk/gcc/c-family/ChangeLog

trunk/gcc/c-family/c-common.c

trunk/gcc/cp/ChangeLog

trunk/gcc/cp/typeck.c

trunk/gcc/testsuite/ChangeLog


[Bug c/48418] [4.6/4.7 Regression] Bit shift operator =

2013-01-09 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org

Summary|[4.6/4.7/4.8 Regression]|[4.6/4.7 Regression] Bit

   |Bit shift operator =  |shift operator =



--- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-09 
15:03:09 UTC ---

Warning regression fixed for 4.8+ for now.


[Bug tree-optimization/55875] [4.8 Regression] IVopts caused miscompilation

2013-01-09 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-09 
15:13:20 UTC ---

Fixed, thanks.


[Bug tree-optimization/55875] [4.8 Regression] IVopts caused miscompilation

2013-01-09 Thread jakub at gcc dot gnu.org


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



--- Comment #13 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-09 
16:35:13 UTC ---

Yes, but I'd say under a different PR.


[Bug tree-optimization/55920] ICE in expand_debug_locations, at cfgexpand.c:3753

2013-01-09 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-09 
17:47:08 UTC ---

Seems the bug is that the DEBUG stmt created by SRA has

 var_decl 0x719a4e40 from$s_addr

type integer_type 0x71996690 unsigned int sizes-gimplified asm_written

public unsigned SI

as the first operand, but

 mem_ref 0x717e0f78

type record_type 0x717df1f8 in_addr sizes-gimplified asm_written

no-force-blk packed type_0 BLK

as the second operand (note the first one is SImode, the latter BLKmode).

Perhaps the packed attribute is what causes this, dunno.  But we probably just

shouldn't emit a debug stmt if the mode is different, unless we can e.g. use a

COMPONENT_REF on it to get at the right mode.



Also, as the aggregate is actually used (in the call stmt a few stmts later),

I'd say SRA shouldn't emit the debug stmts for it at all, ideally for PR55579

we'd emit those only either if we'd SRA it anyway in the code (disregarding

debug), or if we have just stores but no uses of the aggregate.

Right now on trunk every SRA pass adds another set of debug stmts, because the

aggregate assignments aren't DCEd (as they are used).



Looking at this, perhaps we should defer PR55579 resolution for stage1 of 4.9,

so we have more time to e.g. think about some size limits what we still emit as

debug stmts and what not, etc.

Martin, what are your thoughts?


[Bug rtl-optimization/55829] [4.8 Regression] ICE: in curr_insn_transform, at lra-constraints.c:3069 with -msse3

2013-01-09 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-09 
17:49:56 UTC ---

Fixed, thanks.


[Bug middle-end/55921] Crash in verify_ssa for asm to side-steps complex pessimization

2013-01-09 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |ASSIGNED

   Last reconfirmed||2013-01-09

 CC||jakub at gcc dot gnu.org

 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org

   |gnu.org |

 Ever Confirmed|0   |1



--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-09 
18:38:04 UTC ---

expand_complex_operations_1 needs to handle inline asm like

expand_complex_move.


[Bug middle-end/55921] [4.6/4.7/4.8 Regression] Crash in verify_ssa for asm to side-steps complex pessimization

2013-01-09 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|ASSIGNED|UNCONFIRMED

   Last reconfirmed|2013-01-09 00:00:00 |

 AssignedTo|jakub at gcc dot gnu.org|unassigned at gcc dot

   ||gnu.org

   Target Milestone|--- |4.6.4

Summary|Crash in verify_ssa for asm |[4.6/4.7/4.8 Regression]

   |to side-steps complex   |Crash in verify_ssa for asm

   |pessimization   |to side-steps complex

   ||pessimization

 Ever Confirmed|1   |0



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-09 
20:29:03 UTC ---

For -O0 this regressed with

http://gcc.gnu.org/viewcvs?root=gccview=revrev=160903

for -O2 the ICE started between r10 and r102000.


[Bug middle-end/55921] [4.6/4.7/4.8 Regression] Crash in verify_ssa for asm to side-steps complex pessimization

2013-01-09 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |ASSIGNED

   Last reconfirmed||2013-01-09

 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org

   |gnu.org |

 Ever Confirmed|0   |1



--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-09 
20:31:36 UTC ---

Created attachment 29131

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29131

gcc48-pr55921.patch



Untested fix.


[Bug middle-end/55921] [4.6/4.7/4.8 Regression] Crash in verify_ssa for asm to side-steps complex pessimization

2013-01-10 Thread jakub at gcc dot gnu.org


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



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-10 
09:25:27 UTC ---

Author: jakub

Date: Thu Jan 10 09:25:12 2013

New Revision: 195080



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=195080

Log:

PR tree-optimization/55921

* tree-complex.c (expand_complex_asm): New function.

(expand_complex_operations_1): Call it for GIMPLE_ASM.



* gcc.c-torture/compile/pr55921.c: New test.



Added:

trunk/gcc/testsuite/gcc.c-torture/compile/pr55921.c

Modified:

trunk/gcc/ChangeLog

trunk/gcc/testsuite/ChangeLog

trunk/gcc/tree-complex.c


[Bug middle-end/55921] [4.6/4.7 Regression] Crash in verify_ssa for asm to side-steps complex pessimization

2013-01-10 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



Summary|[4.6/4.7/4.8 Regression]|[4.6/4.7 Regression] Crash

   |Crash in verify_ssa for asm |in verify_ssa for asm to

   |to side-steps complex   |side-steps complex

   |pessimization   |pessimization



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-10 
09:31:53 UTC ---

Fixed for 4.8+ so far.


[Bug inline-asm/55934] New: [4.8 Regression] LRA inline asm error recovery

2013-01-10 Thread jakub at gcc dot gnu.org


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



 Bug #: 55934

   Summary: [4.8 Regression] LRA inline asm error recovery

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: inline-asm

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: ja...@gcc.gnu.org





_Complex float

foo (void)

{

  _Complex float x;

  __asm ( : =x (x)); /* { dg-error impossible register constraint } */

  return x;

}



on x86_64 used to ICE since the introduction of LRA (before that it has been

just issuing error on the asm).  Starting with

http://gcc.gnu.org/viewcvs?root=gccview=revrev=193871

this got fixed, but already (guess) starting with

http://gcc.gnu.org/viewcvs?root=gccview=revrev=193901

it issues both the expected error and also ICE after it.


[Bug inline-asm/55934] [4.8 Regression] LRA inline asm error recovery

2013-01-10 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



   Keywords||error-recovery, ra

   Priority|P3  |P2

 CC||vmakarov at gcc dot gnu.org

   Target Milestone|--- |4.8.0


[Bug tree-optimization/32306] [4.6/4.7/4.8 Regression] redundant || not eliminated

2013-01-10 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #23 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-10 
11:26:09 UTC ---

It generally depends on the branch cost, e.g. out of #c19 testcase on x86_64 we

generate:

  D.1729 = b1 != 0;

  D.1730 = b2 != 0;

  D.1731 = D.1729  D.1730;

  if (D.1731 != 0) goto D.1732; else goto D.1727;

  D.1732:

  D.1733 = b3 != 0;

  D.1734 = b4 != 0;

  D.1735 = D.1733  D.1734;

  if (D.1735 != 0) goto D.1736; else goto D.1727;

  D.1736:

etc., but on other targets it could have just one comparison per conditional

jump, or on the other side 4.  While the tests don't have side-effects, turning

too many s into s wouldn't result in very good code, though of course would

make it easier to perform some optimizations.  Anyway, you can write it in the

source as a series of ifs:

  array[0] = 1;

  if (!b1)

array[0] = 0;

  else if (!b2)

array[0] = 0;

  else if (!b3)

array[0] = 0;

...

and we wouldn't be able to optimize it anyway.


[Bug sanitizer/55561] TSAN: Fortran/OMP yields false positives

2013-01-10 Thread jakub at gcc dot gnu.org


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



--- Comment #35 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-10 
11:37:08 UTC ---

For config/posix it is not that easy, because you can't assume that atomics are

available.  You'd need to guard it with #ifdef HAVE_SYNC_BUILTINS and do

something else (nothing?) otherwise.  Those targets don't support tsan

anyway...


[Bug fortran/55935] [OOP] Fortran fronted has ADDR_EXPRs of FUNCTION_DECLs with bogus BLOCK

2013-01-10 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-10 
16:29:17 UTC ---

Supposedly ADDR_EXPR is shared between several functions or something similar.


[Bug tree-optimization/52448] [4.6/4.7/4.8 Regression] cselim broken with calls

2013-01-10 Thread jakub at gcc dot gnu.org


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



--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-10 
16:49:26 UTC ---

Any progress with this?


[Bug fortran/55935] [OOP] Fortran fronted has ADDR_EXPRs of FUNCTION_DECLs with bogus BLOCK

2013-01-11 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |ASSIGNED

 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org

   |gnu.org |



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-11 
09:18:41 UTC ---

Created attachment 29142

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29142

gcc48-pr55935.patch



Untested fix.  Although the FE perhaps could unshare_expr_without_location so

that ADDR_EXPRs in the ctor don't have location, IMHO gimple-fold.c still has

to at least unshare_expr those expressions it copies from the constructors,

otherwise we'll end up with invalid sharing of ADDR_EXPRs etc. between

different functions (or within the same function).



This can be reproduced even with C:

void foo (void);

struct S { int i; void (*fn) (); };

const struct S s = { 5, foo };

void *fn1 (int x) { if (x  0) return s.fn; if (x) return 0; return s.fn; }

void *fn2 (int x) { if (x  0) return s.fn; if (x) return 0; return s.fn; }

void *fn3 (void) { return s.fn; }

void *fn4 (void) { return s.fn; }

at -O2, in *.copyrename1 pass all 6 ADDR_EXPRs in the IL are still shared.

ccp1 for whatever reason unshares them all (surprisingly).


[Bug fortran/55935] [OOP] Fortran fronted has ADDR_EXPRs of FUNCTION_DECLs with bogus BLOCK

2013-01-11 Thread jakub at gcc dot gnu.org


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



--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-11 
10:03:09 UTC ---

Created attachment 29143

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29143

gcc48-pr55935.patch



Or alternative patch that ensures in the FE there are no locations in the ctor

expressions, and just unshare_expr in the middle-end.  But I tend to prefer the

other patch.


[Bug rtl-optimization/55672] [4.8 Regression] -fstack-check=generic ICEs in print_reg, at config/i386/i386.c:13868

2013-01-11 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-11 
10:44:34 UTC ---

Assuming fixed.


[Bug tree-optimization/53342] [4.8 Regression] rnflow.f90 is ~5% slower after revision 187340

2013-01-11 Thread jakub at gcc dot gnu.org


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



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-11 
11:52:59 UTC ---

Created attachment 29144

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29144

hackish attempt


[Bug inline-asm/55934] [4.8 Regression] LRA inline asm error recovery

2013-01-11 Thread jakub at gcc dot gnu.org


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



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-11 
12:59:33 UTC ---

Please also consider asm goto like:

void bar (int);



void

foo (_Complex float x)

{

  asm volatile goto ( : : x (x) : : foo); /* { dg-error impossible

constraint } */

  bar (1);

foo:

  bar (2);

}



Turning a JUMP_INSN pattern into (use (const_int 0)) might not work well,

though apparently reload.c does that too.  Perhaps it is lucky enough with it,

as if reload results in errors, following passes are skipped.


[Bug fortran/55935] [OOP] Fortran fronted has ADDR_EXPRs of FUNCTION_DECLs with bogus BLOCK

2013-01-11 Thread jakub at gcc dot gnu.org


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



--- Comment #13 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-11 
14:40:45 UTC ---

Created attachment 29148

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29148

gimple-fold



Alternative to alternative canonicalize_constructor_val fix which I'm afraid

could sometimes unshare up to 3 times.



Or we could just tree orig_cval = cval = unshare_expr (cval); as the first

thing in the function (and drop the unshare_expr in fold_gimple_assign of

course).


[Bug target/55941] [4.8 Regression] Strange copy of double (in struct) to stack

2013-01-11 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2013-01-11

 CC||jakub at gcc dot gnu.org

 Ever Confirmed|0   |1



--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-11 
14:44:23 UTC ---

This first regressed with:

http://gcc.gnu.org/viewcvs?root=gccview=revrev=190492

into:

movsd   %xmm0, -8(%rsp)

addsd   %xmm2, %xmm0

and then we regress again with:

http://gcc.gnu.org/viewcvs?root=gccview=revrev=190847

into:

addsd   %xmm0, %xmm2

movsd   %xmm0, -8(%rsp)

movapd  %xmm2, %xmm0


[Bug target/55941] [4.8 Regression] Strange copy of double (in struct) to stack

2013-01-11 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||rth at gcc dot gnu.org



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-11 
15:01:18 UTC ---

I'd hope that the subreg pass could be able to figure out something out of:

(insn 4 3 5 2 (set (reg:TI 63 [ x ])

(const_int 0 [0])) pr55941.c:2 85 {*movti_internal_rex64}

 (nil))

(insn 5 4 6 2 (set (subreg:DF (reg:TI 63 [ x ]) 0)

(reg:DF 64 [ x ])) pr55941.c:2 131 {*movdf_internal_rex64}

 (expr_list:REG_DEAD (reg:DF 64 [ x ])

(nil)))

(insn 6 5 8 2 (set (subreg:DF (reg:TI 63 [ x ]) 8)

(reg:DF 22 xmm1 [ x+8 ])) pr55941.c:2 131 {*movdf_internal_rex64}

 (expr_list:REG_DEAD (reg:DF 22 xmm1 [ x+8 ])

(nil)))

(insn 8 6 9 2 (set (reg:DF 67 [ D.1730 ])

(reg:DF 23 xmm2 [ y ])) pr55941.c:2 131 {*movdf_internal_rex64}

 (expr_list:REG_DEAD (reg:DF 23 xmm2 [ y ])

(nil)))

(note 9 8 12 2 NOTE_INSN_FUNCTION_BEG)

(insn 12 9 17 2 (set (reg:DF 67 [ D.1730 ])

(plus:DF (reg:DF 67 [ D.1730 ])

(subreg:DF (reg:TI 63 [ x ]) 0))) pr55941.c:2 785

{*fop_df_comm_sse}

 (expr_list:REG_DEAD (reg:TI 63 [ x ])

(nil)))

(all accesses to pseudo 63 in the listed insns), but it only drops the insn 6,

but doesn't figure out the only user uses the low part and thus propagate the

setter.  Or perhaps should forwprop propagate something like that?


[Bug debug/55608] [4.6/4.7/4.8/4.9 Regression] Debug info quality regressions with file scope vars

2013-01-11 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |ASSIGNED

   Target Milestone|4.6.4   |4.9.0

Summary|[4.6/4.7/4.8 Regression]|[4.6/4.7/4.8/4.9

   |Debug info quality  |Regression] Debug info

   |regressions with file scope |quality regressions with

   |vars|file scope vars



--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-11 
15:55:17 UTC ---

Cary said on gcc-patches this is a stage1 material, so let's defer it for 4.9

then.


[Bug libstdc++/54392] [4.6/4.7/4.8 Regression] std::string::assign() fails to update length

2013-01-11 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #16 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-11 
15:57:40 UTC ---

So, what are we going to do with this?  Defer for 4.9, or fix for 4.8?


<    1   2   3   4   5   6   7   8   9   10   >