[Bug middle-end/50199] [4.7/4.8 Regression] wrong code with -flto -fno-merge-constants

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



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

I guess it is again too late to really fix this for 4.8, can we at least error

out on -fno-merge-constants used together with -flto ?  We'll still fail for

targets that don't support mergeable string sections, but generally, it makes

no sense to use -fno-merge-constants together with -flto.


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

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


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



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

I'd very much prefer to keep PR54971 fix in.



As for #c3, I believe it would be enough to test the mode, so perhaps

  tree repl = get_access_replacement (lacc);

  enum machine_mode mode = DECL_MODE (repl);

and compare that to TYPE_MODE (TREE_TYPE (rhs)).  At least that would match

what cfgexpand.c is actually checking, otherwise it looks reasonable.



And if #c4 works, that would be even better.


[Bug target/55947] non constant memory models lose HLE qualifiers

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


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



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-11 
21:23:11 UTC ---

Yeah, that is intentional.  If you want HLE acquire/release, you really should

pass it as constant.  What do you think we should emit instead?  Runtime switch

based on the memory model?


[Bug tree-optimization/55949] __builtin_object_size size passed to memcpy_chk is incorrect

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


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



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-11 
22:14:09 UTC ---

Looks like a bug in whatever string.h headers you are using.

The second parameter for __builtin_object_size for memcpy should be always 0,

not __USE_FORTIFY_LEVEL  1 (that is used for functions like strcpy and has the

additional restriction that the copying isn't allowed to cross array/field

boundaries).

In glibc there is

#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL  1)

#define __bos0(ptr) __builtin_object_size (ptr, 0)

and

__extern_always_inline void *

__NTH (memcpy (void *__restrict __dest, __const void *__restrict __src,

   size_t __len))

{

  return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));

}


[Bug tree-optimization/55955] [4.8 Regression] ICE in optab_for_tree_code, at optabs.c:402

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


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



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-12 
20:14:59 UTC ---

Yeah, started with my http://gcc.gnu.org/viewcvs?root=gccview=revrev=188656

Slightly reduced testcase:

int b;



void

f (int x)

{

  int a;

  for (a = x; a  2; a++)

for (b = 0; b  2; b++)

  *(unsigned short *) 0x10UL %= 46;

}



Will have a look on Monday.


[Bug bootstrap/55957] [4.8 Regression] Bootstrap error in prop_value_t evaluate_stmt

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


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



--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-13 
11:29:13 UTC ---

Yeah, what bootstrap compiler are you using?

And are you sure your tree is in consistent state?

$ grep gimple_call_builtin_p gimple.h

extern bool gimple_call_builtin_p (gimple, enum built_in_class);

extern bool gimple_call_builtin_p (gimple, enum built_in_function);


[Bug target/55909] libtool test exposes what I think is some alignment issue in libstdc++

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #42 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-13 
11:31:35 UTC ---

TLS is supported in Fedora glibc obviously, the issue is likely with the sorry

state of the Fedora/SPARC port, which is essentially unmaintained.  So it must

be something SPARC specific.


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

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


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



--- Comment #16 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-13 
12:33:49 UTC ---

Author: jakub

Date: Sun Jan 13 12:33:43 2013

New Revision: 195136



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

Log:

PR fortran/55935

* gimple-fold.c (get_symbol_constant_value): Call

unshare_expr.

(fold_gimple_assign): Don't call unshare_expr here.

(fold_ctor_reference): Call unshare_expr.



* trans-expr.c (gfc_conv_structure): Call

unshare_expr_without_location on the ctor elements.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/fortran/ChangeLog

trunk/gcc/fortran/trans-expr.c

trunk/gcc/gimple-fold.c


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

2013-01-13 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|ASSIGNED|RESOLVED

 Resolution||FIXED



--- Comment #17 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-13 
16:54:28 UTC ---

Fixed.


[Bug tree-optimization/55955] [4.8 Regression] ICE in optab_for_tree_code, at optabs.c:402

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



   Target Milestone|--- |4.7.3



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-14 
12:33:36 UTC ---

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


[Bug tree-optimization/55964] [4.7/4.8 Regression] Segmentation fault with -O -ftree-loop-distribution -funswitch-loops

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2013-01-14

 CC||jakub at gcc dot gnu.org

   Target Milestone|--- |4.7.3

Summary|Segmentation fault with -O  |[4.7/4.8 Regression]

   |-ftree-loop-distribution|Segmentation fault with -O

   |-funswitch-loops|-ftree-loop-distribution

   ||-funswitch-loops

 Ever Confirmed|0   |1



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

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


[Bug tree-optimization/55955] [4.8 Regression] ICE in optab_for_tree_code, at optabs.c:402

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



   Target Milestone|4.7.3   |4.8.0



--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-14 
12:35:19 UTC ---

Please ignore previous comment, it was meant for PR55964.


[Bug tree-optimization/55955] [4.8 Regression] ICE in optab_for_tree_code, at optabs.c:402

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


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



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 #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-14 
12:42:33 UTC ---

Created attachment 29159

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

gcc48-pr55955.patch



Untested fix.


[Bug c/55967] rightshift an unsigned value (X) by it's number of bits does not always yield 0, when X is an unsigned that's leftshifted by it's number of bits and offset

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


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



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-14 
13:02:12 UTC ---

The testcase is invalid, the bug is only on the side of the testcase.


[Bug tree-optimization/48766] [4.6/4.7/4.8 Regression] Infinite recursion in fold_binary_loc()

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


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



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

Created attachment 29161

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

gcc48-pr48766.patch



Untested fix.  Seems in the previous option processing the negative options

cancel their corresponding positive options (and vice versa), and only the last

occurrence of the option from the command line remains and the patch just

disables -fwrapv if -ftrapv comes after -fwrapv, and vice versa.

So e.g.

-fwrapv -ftrapv -fwrapv results in -fwrapv

-fwrapv -ftrapv results in -ftrapv

-fwrapv -ftrapv -fno-wrapv results in -ftrapv

-ftrapv -fwrapv -fno-trapv results in -fwrapv

etc.


[Bug middle-end/50199] [4.7/4.8 Regression] wrong code with -flto -fno-merge-constants

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


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



--- Comment #15 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-14 
14:55:45 UTC ---

(In reply to comment #14)

 I'm not sure this isn't an issue without LTO

 though (possibly way harder to trigger though).



I don't see how.  -fno-merge-constants doesn't say that constants aren't merged

within the same TU, they are merged always, -fno-merge-constants is about not

allowing constants to be merged between different object files.  As without LTO

we operate at the level of individual TUs, we don't have issues with that.

-fno-merge-constants is the only possible thing on targets that don't have

needed support on the assembler/linker side though.


[Bug c++/55742] [4.8 regression] __attribute__ in class function declaration cause prototype does not match errors.

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-14 
15:13:47 UTC ---

Either use a different name of the attribute (replace target with mv_target or

whatever), or require a new attribute (mv?) to be present for multi-versioning

(mv attribute on any of the decls would enable it, if mv attribute isn't

present on either of the two decls being merged, then the target attribute is

merged as before 4.8).


[Bug middle-end/55943] [4.6/4.7/4.8 Regression] ICE in gen_reg_rtx

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org

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

   |gen_reg_rtx |ICE in gen_reg_rtx

  Known to fail||4.4.1



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-14 
15:44:50 UTC ---

I don't have 4.3 around, but 4.4.1 certainly ICEs on this, both with -O0 and

with optimizations.

The ICE is during reload, similarly to the trunk ICE.

I guess the testcase in the testsuite should be just limited to x86_64/i686 and

perhaps few others where the r resp. =r constraint can be handled.


[Bug tree-optimization/48766] [4.6/4.7/4.8 Regression] Infinite recursion in fold_binary_loc()

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



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

Because it behaves differently.

./xgcc -B ./ -fwrapv -ftrapv -fno-trapv -fverbose-asm -S -xc /dev/null -o -

21 | grep rapv

# -march=x86-64 -auxbase-strip - -fno-trapv -fverbose-asm

with Negative(fwrapv) resp. Negative(ftrapv) added instead of this patch, while

with that patch it was -fwrapv.


[Bug preprocessor/55971] Preprocessor macros with C++11 raw string literals fail to compile

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


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



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-14 
16:35:52 UTC ---

That's not the case, because most of the raw string support is in the

preprocessor.


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

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


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



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

Can't we then compute the final values of the bases after the peeling loop, and

add those gimplified after the peeling loop, then use them in the next loop?


[Bug preprocessor/55971] Preprocessor macros with C++11 raw string literals fail to compile

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jason at gcc dot gnu.org,

   ||tromey at gcc dot gnu.org



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

This is about:

  if (pfile-state.in_directive

  || pfile-state.parsing_args

  || pfile-state.in_deferred_pragma)

{

  cur--;

  type = CPP_OTHER;

  cpp_error_with_line (pfile, CPP_DL_ERROR, token-src_loc, 0,

   unterminated raw string);

  break;

}

in lex_raw_string, in this case state.in_directive is true, as it is in #define

directive.  But just removing state.in_directive from that condition isn't

enough,

1537  _cpp_process_line_notes (pfile, false);

1538  if (!_cpp_get_fresh_line (pfile))

doesn't handle this case correctly.


[Bug c++/55742] [4.8 regression] __attribute__ in class function declaration cause prototype does not match errors.

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


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



--- Comment #16 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-14 
18:25:41 UTC ---

I guess if for multiversioning you want the two decls to be independent, like

overloaded functions with different argument types are, then IMHO the mv

attribute alternative and not merging anything at all in that case (neither the

decls, nor any of the attributes (not just target attribute) is better.


[Bug c++/55742] [4.8 regression] __attribute__ in class function declaration cause prototype does not match errors.

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


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



--- Comment #17 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-14 
18:32:44 UTC ---

Actually, what you'd merge is everything as usually if mv attribute isn't on

either of the decls, or if mv attribute is present on either one, and both

decls have either the same target attribute, or no target attribute at all.  If

mv attribute is on newdecl or olddecl, and target attribute is either present

on just one of the decls, or on both, but with different argument, it would

treat them as decls that mangle differently and won't be merged.


[Bug c++/55742] [4.8 regression] __attribute__ in class function declaration cause prototype does not match errors.

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


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



--- Comment #19 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-14 
20:23:54 UTC ---

That wouldn't work, because you would then have the default (non-mv) version,

possibly mv version with no target attribute, and then some other mv versions

with target attributes.  The problem with that is that the first two mangle the

same.  This means that a non-mv and mv with no target attribute needs to be

treated as the same decl (i.e. merged together).


[Bug c/55967] rightshift an unsigned value (X) by it's number of bits does not always yield 0, when X is an unsigned that's leftshifted by it's number of bits and offset

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


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



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

Please google around on undefined behavior, you'll find various FAQs about

it.  When a program triggers undefined behavior, anything can happen, the

compiler can optimize based on the fact that such behavior won't happen in a

program, as a bonus in this case you get a warning telling you your bug.  There

is no graceful/expected behavior for undefined behavior, otherwise it wouldn't

be undefined.


[Bug tree-optimization/48766] [4.6/4.7/4.8 Regression] Infinite recursion in fold_binary_loc()

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


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



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

Author: jakub

Date: Tue Jan 15 08:16:56 2013

New Revision: 195186



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

Log:

PR tree-optimization/48766

* opts.c (common_handle_option): For -fwrapv disable -ftrapv, for

-ftrapv disable -fwrapv.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/opts.c


[Bug tree-optimization/48766] [4.6/4.7 Regression] Infinite recursion in fold_binary_loc()

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


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



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]

   |Infinite recursion in   |Infinite recursion in

   |fold_binary_loc()   |fold_binary_loc()



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

Fixed on the trunk so far.


[Bug c++/55988] Incorrect code generation with const and -std=c++0x

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 CC||jakub at gcc dot gnu.org

 Resolution||DUPLICATE



--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-15 
08:41:00 UTC ---

Dup.



*** This bug has been marked as a duplicate of bug 55893 ***


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

2013-01-15 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||pavel.zbitskiy at gmail dot

   ||com



--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-15 
08:41:00 UTC ---

*** Bug 55988 has been marked as a duplicate of this bug. ***


[Bug testsuite/54139] [4.8 regression] some ARM Thumb-2 tests appear to be run on ARMv5TE hardware causing unhandled exceptions

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


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



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-15 
09:25:45 UTC ---

http://gcc.gnu.org/ml/gcc-testresults/2013-01/msg01425.html

as an example of armv5tel-*-linux-gnueabi shows

FAIL: gcc.target/arm/ftest-armv6t2-arm.c execution test

FAIL: gcc.target/arm/ftest-armv6t2-thumb.c execution test

FAIL: gcc.target/arm/ftest-armv7a-arm.c execution test

FAIL: gcc.target/arm/ftest-armv7a-thumb.c execution test

FAIL: gcc.target/arm/ftest-armv7r-arm.c execution test

FAIL: gcc.target/arm/ftest-armv7r-thumb.c execution test

(not sure on what hw has it been run) and

http://gcc.gnu.org/ml/gcc-testresults/2013-01/msg01494.html

(armv7hl-*-linux-gnueabi), which shows

FAIL: gcc.target/arm/ftest-armv4t-thumb.c (test for excess errors)

UNRESOLVED: gcc.target/arm/ftest-armv4t-thumb.c compilation failed to produce

executable

FAIL: gcc.target/arm/ftest-armv5t-thumb.c (test for excess errors)

UNRESOLVED: gcc.target/arm/ftest-armv5t-thumb.c compilation failed to produce

executable

FAIL: gcc.target/arm/ftest-armv5te-thumb.c (test for excess errors)

UNRESOLVED: gcc.target/arm/ftest-armv5te-thumb.c compilation failed to produce

executable

FAIL: gcc.target/arm/ftest-armv6-thumb.c (test for excess errors)

UNRESOLVED: gcc.target/arm/ftest-armv6-thumb.c compilation failed to produce

executable

FAIL: gcc.target/arm/ftest-armv6k-thumb.c (test for excess errors)

UNRESOLVED: gcc.target/arm/ftest-armv6k-thumb.c compilation failed to produce

executable

FAIL: gcc.target/arm/ftest-armv6z-thumb.c (test for excess errors)

UNRESOLVED: gcc.target/arm/ftest-armv6z-thumb.c compilation failed to produce

executable

FAIL: gcc.target/arm/mmx-2.c (internal compiler error)

FAIL: gcc.target/arm/mmx-2.c (test for excess errors)



All these tests are new for 4.8 and all test new functionality in 4.8, so the

regression status (beyond having some extra FAILs) is questionable.


[Bug tree-optimization/55955] [4.8 Regression] ICE in optab_for_tree_code, at optabs.c:402

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


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



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

Author: jakub

Date: Tue Jan 15 09:31:28 2013

New Revision: 195190



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

Log:

PR tree-optimization/55955

* tree-vect-loop.c (vectorizable_reduction): Give up early on

*SHIFT_EXPR and *ROTATE_EXPR codes.



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



Added:

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

Modified:

trunk/gcc/ChangeLog

trunk/gcc/testsuite/ChangeLog

trunk/gcc/tree-vect-loop.c


[Bug tree-optimization/55955] [4.8 Regression] ICE in optab_for_tree_code, at optabs.c:402

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|ASSIGNED|RESOLVED

 Resolution||FIXED



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-15 
09:36:14 UTC ---

Fixed.


[Bug fortran/54767] [4.7/4.8 Regression] Incorrect code generated with -O2 -fcheck=bounds

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


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



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-15 
10:47:36 UTC ---

Yeah, indeed.  The bug seems to be in the second vrp pass on xxx function.

iaii_23: [_79, _79]  EQUIVALENCES: { } (0 elements)

looks wrong (iaii_23 is only conditionally equal to _79 (in the first iteration

that sets iaii, i.e. ia = 2, second iteration), it can be the value from

previous cycle too (in the ia = 3, third iteration).

This then leads to

  _35 = prephitmp_50 - iaii_23;

being

_35: [0, 0]

(again, wrong) and that is why we end up with 1 instead of 2 in the second row.



There is:

Visiting PHI node: iaii_23 = PHI iaii_1(11), prephitmp_50(10)



Argument #0 (11 - 12 not executable)



Argument #1 (10 - 12 executable)

prephitmp_50

Value: [_79, _79]  EQUIVALENCES: { _79 } (1 elements)

Found new range for iaii_23: [_79, _79]



which is wrong, but not sure if this is the first spot in the dump.  iaii_1

here is only conditionally UNDEFINED, it might be iaii value from previous

iteration too.


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

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


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



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

Created attachment 29168

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

gcc48-pr55920.patch



Looking at the #c3 patch, I wonder if this wouldn't be more appropriate

(untested so far).  It tries to match roughly what the modify_this_stmt

case does a few lines before.


[Bug middle-end/48087] [4.6/4.7/4.8 Regression] -Wall -Werror adds warnings over and above those generated by -Wall

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


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



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

Created attachment 29170

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

gcc48-pr48087.patch



Untested fix.  That said, it seems that on the provided testcase g++ already

generates the same set of warnings/errors for -Wreturn-type vs.

-Werror=return-type, starting with

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

so supposedly you'd need to find a different testcase for this to still claim

4.8 Regression status.



Not sure if this can be stage4 material, I think it is more stage1-ish

material.


[Bug target/55940] Incorrect code for accessing parameters with 32-bit Intel hosts

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



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

You haven't provided the preprocessed testcase, so it is hard to guess, but

generally, if you have say a static function and call it also from assembly,

you need __attribute__((used)) to prevent the compiler from using different

calling conventions.  Otherwise, if the compiler can see all possible callers

(inline asm doesn't count, then you have to use the used attribute), it can

decide not to emit the function at all, or use whatever calling convention it

thinks are best for the function.


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

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


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



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

Author: jakub

Date: Tue Jan 15 16:33:24 2013

New Revision: 195209



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

Log:

PR tree-optimization/55920

* tree-sra.c (sra_modify_assign): If for lacc-grp_to_be_debug_replaced

there is non-useless type conversion needed from debug rhs to lhs,

use build_debug_ref_for_model and/or VIEW_CONVERT_EXPR.



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



Added:

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

Modified:

trunk/gcc/ChangeLog

trunk/gcc/testsuite/ChangeLog

trunk/gcc/tree-sra.c


[Bug target/55940] [4.7/4.8 Regression] Incorrect code for accessing parameters with 32-bit Intel hosts

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|WAITING |NEW

   Target Milestone|--- |4.7.3

Summary|Incorrect code for  |[4.7/4.8 Regression]

   |accessing parameters with   |Incorrect code for

   |32-bit Intel hosts  |accessing parameters with

   ||32-bit Intel hosts



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

Sounds like shrink-wrapping bug to me:



/* { dg-options -Os } */

/* { dg-additional-options -mpreferred-stack-boundary=2 { target { { i?86-*-*

x86_64-*-* }  ia32 } } } */



struct S { int s; unsigned long t; };



__attribute__ ((visibility (hidden))) unsigned long long bar (struct S *x,

unsigned long y);



unsigned long long

foo (struct S *x, unsigned long y)

{

  unsigned long a;

  if (__builtin_expect (((unsigned long) (x) + 0x1000U  0x2000U), 0))

return ~0ULL;

  if (__builtin_expect (x-s = 0 || x-s  9, 0))

return ~0ULL;

  a = x-t  12;

  if (y = a  y == a)

return ~0ULL;

  if (x-s == 3)

return x-t + y * 4096;

  return bar (x, y);

}



The pre-prologue code can't use registers initialized in the prologue.


[Bug middle-end/53073] [4.8 Regression] 464.h264ref in SPEC CPU 2006 miscompiled

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-15 
17:56:05 UTC ---

You're wrong, the code in #c2 is not valid C.

ISO C99 6.5.2.1 says that d[++k] is equivalent to:

  (*((d)+(++k)))

and ++k in the last iteration is 16, so it is

  (*(d+16))

and then 6.5.6/8 (last sentence) applies:

If the result points one past the last element of the array object, it

shall not be used as the operand of a unary * operator that is evaluated.

So, if you ever enter this loop, you'll invoke undefined behavior and anything

can happen.


[Bug target/55940] [4.7/4.8 Regression] Incorrect code for accessing parameters with 32-bit Intel hosts

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


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



--- Comment #12 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-15 
18:28:31 UTC ---

I think:



--- gcc/function.c.jj2013-01-11 09:02:55.0 +0100

+++ gcc/function.c2013-01-15 19:23:20.648826011 +0100

@@ -6029,7 +6029,7 @@ thread_prologue_and_epilogue_insns (void

   if (pic_offset_table_rtx)

 add_to_hard_reg_set (set_up_by_prologue.set, Pmode,

  PIC_OFFSET_TABLE_REGNUM);

-  if (stack_realign_drap  crtl-drap_reg)

+  if (crtl-drap_reg)

 add_to_hard_reg_set (set_up_by_prologue.set,

  GET_MODE (crtl-drap_reg),

  REGNO (crtl-drap_reg));



should fix it, in this case we pessimistically assume we might need to realign

the stack and because of -Os we create vDRAP, but then find out we don't

actually need to realign anything.


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

2013-01-15 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



 Status|UNCONFIRMED |RESOLVED

 Resolution||FIXED



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

Fixed.


[Bug tree-optimization/55936] [4.6/4.7/4.8/4.9 Regression] Missed VRP optimization

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org

   Target Milestone|4.6.4   |4.9.0

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

   |Missed VRP optimization |Regression] Missed VRP

   ||optimization



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

Deferring for 4.9 then.


[Bug rtl-optimization/55153] [4.8 Regression] ICE: in begin_move_insn, at sched-ebb.c:205 with -fsched2-use-superblocks and __builtin_prefetch

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


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



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-15 
21:51:36 UTC ---

Thanks for working on this.  Unfortunately it seems the

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

change (commit message didn't make it into this PR because of an extra pr after

/ ) regressed i386/pr45352.c testcase on i?86.

./cc1 -m32 -O3 -march=amdfam10 -fselective-scheduling2 -fsel-sched-pipelining

-funroll-all-loops gcc.target/i386/pr45352.c

ICEs now with:

internal compiler error: in add_insn_mem_dependence, at sched-deps.c:1717


[Bug target/55940] [4.7/4.8 Regression] Incorrect code for accessing parameters with 32-bit Intel hosts

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


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



--- Comment #13 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-15 
22:58:28 UTC ---

Author: jakub

Date: Tue Jan 15 22:58:21 2013

New Revision: 195220



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

Log:

PR target/55940

* function.c (thread_prologue_and_epilogue_insns): Always

add crtl-drap_reg to set_up_by_prologue.set, even if

stack_realign_drap is false.



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



Added:

trunk/gcc/testsuite/gcc.dg/pr55940.c

Modified:

trunk/gcc/ChangeLog

trunk/gcc/function.c

trunk/gcc/testsuite/ChangeLog


[Bug middle-end/56000] [4.8 Regression] FAIL: libffi.call/cls_uchar_va.c -O0 -W -Wall output pattern test

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


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



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-16 
07:58:09 UTC ---

These are all new tests, so why do you consider that a regression?

E.g. the va_1.c test is xfailed even on x86_64-*-*, so I'd guess it isn't very

portable.  All these tests were added for aarch64, so I bet they haven't been

tested much on targets beyond that and a few most common ones.


[Bug target/55940] [4.7 Regression] Incorrect code for accessing parameters with 32-bit Intel hosts

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


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



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 |

Summary|[4.7/4.8 Regression]|[4.7 Regression] Incorrect

   |Incorrect code for  |code for accessing

   |accessing parameters with   |parameters with 32-bit

   |32-bit Intel hosts  |Intel hosts



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

Fixed on the trunk so far.


[Bug c++/55998] [4.8 Regression] [C++11] 'integral expression .. is not constant' when instantiating template alias in a template using a parameter of an encapsulating template

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


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



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-16 
08:02:44 UTC ---

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


[Bug c++/55742] [4.8 regression] __attribute__ in class function declaration cause prototype does not match errors.

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


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



--- Comment #23 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-16 
08:11:42 UTC ---

Merging of target attribute is what gcc/g++ did though, the function would get

then both target attributes (seems later decl's target wins), and the first

target attribute in DECL_ATTRIBUTES would be the one to be used.  Perhaps we

can add a -Wattributes warning for that case if mv attribute isn't present and

are merging target attributes with different strings.


[Bug target/52122] [4.6/4.7/4.8 Regression] incorrect ln -s replacement for mingw like targets in configure files

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-16 
09:08:51 UTC ---

I'd say it is too late for autoconf update for 4.8 now, if this is about LN_S

uses in a single Makefile (are we talking about libada/Makefile.in ? ), you

could temporarily use something like

ifeq (cp -p,$(LN_S))

LN_S_RECURSIVE = cp -pR

else

LN_S_RECURSIVE = $(LN_S)

endif

(or even limit it to targets known to support cp -pR well that don't have ln

-s)

and use $(LN_S_RECURSIVE) in

$(LN_S) $(ADA_RTS_DIR) adainclude

$(LN_S) $(ADA_RTS_DIR) adalib

(2x) instead $(LN_S).  Then for 4.9 we can upgrade autoconf requirements and

revert this.


[Bug target/55940] [4.7 Regression] Incorrect code for accessing parameters with 32-bit Intel hosts

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


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



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

As a workaround, you can use something like

#if __GNUC__ == 4  __GNUC_MINOR__ == 7

__attribute__((__optimize__ (no-shrink-wrap)))

#endif

on the VBoxHost_RTR0MemObjGetPagePhysAddr function or don't use long long for

the return type here (pass it by reference etc., that is the reason why gcc

even thought about potentially needing the stack realignment), don't use

-mpreferred-stack-boundary=2, or -Os, or use optimize (2) attribute, there are

lots of options.


[Bug fortran/52865] GCC can't vectorize fortran loop but able to vectorize similar c-loop

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


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



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-16 
10:25:48 UTC ---

countm1.0 type is unsigned, thus + 0x is effectively - 1.


[Bug sanitizer/55975] FAIL: c-c++-common/asan/global-overflow-1.c -O0 output pattern test

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


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



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

Sounds like a recent change:

http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commitdiff;h=048ee0993ec8360abb0b51bdf8f8721e9ed62ec4

The question is what to do about that on the libasan side.

Can we keep + (1ULL  41) asan_shadow_offset for both 44-bit and 46-bit user

address spaces?  If we just increase kHighMemEnd to 0x3fffUL, it

will mean that on older kernels half of the user address space will be the

shadow memory (from 0x200 to 0x9ff).  Perhaps that is still

acceptable, but if ever the address space grows again, we'd need to make size

of shadow memory region and kHighMemEnd dynamic.


[Bug fortran/52865] GCC can't vectorize fortran loop but able to vectorize similar c-loop

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


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



--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-16 
10:47:18 UTC ---

BTW, does Fortran have well defined number of iterations if say a do loop goes

from (unknown to compiler):

  integer :: i, m, n

  m = huge(0) - 7

  n = huge(0) - 2

  do i = m, n, 4

   ...

  end do

?  If it must iterate exactly twice (for i = huge(0) - 7 and i = huge(0) - 3),

then it can't be expressed as a corresponding C loop (which would end up with

undefined behavior).  But using a temporary, increment and then test of the

temporary should be doable in the FE, the question is if it does cure this.


[Bug rtl-optimization/50176] [4.7/4.8 Regression] 4.7 generates spill-fill dealing with char-int conversion

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


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



--- Comment #21 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-16 
11:22:23 UTC ---

Created attachment 29177

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

gcc48-pr50176.patch



Are you sure about it?  For me on the

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

testcase with -m32 -O2 with the attached patch I get just minor RA changes:

-   movl(%esp), %edi

+   movl(%esp), %esi

addl$3, %ecx

-   movl4(%esp), %esi

-   movzbl(%edi,%eax), %ebx

+   movl4(%esp), %edi

+   movzbl(%esi,%eax), %ebx

+   movzbl(%edi,%eax), %esi

movzbl0(%ebp,%eax), %edi

-   movzbl(%esi,%eax), %esi

The fwprop extension is performed as can be seen in the dump, but the overall

effect isn't there.


[Bug rtl-optimization/55153] [4.8 Regression] ICE: in begin_move_insn, at sched-ebb.c:205 with -fsched2-use-superblocks and __builtin_prefetch

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


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



--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-16 
11:31:51 UTC ---

Author: vmakarov

Date: Tue Jan 15 16:47:36 2013

New Revision: 195211



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

Log:

2013-01-15  Vladimir Makarov  vmaka...@redhat.com



PR rtl-optimization/pr55153

* sched-deps.c (sched_analyze_2): Add pending reads for prefetch.



2013-01-15  Vladimir Makarov  vmaka...@redhat.com



PR rtl-optimization/pr55153

* gcc.dg/pr55153.c: New.





Added:

trunk/gcc/testsuite/gcc.dg/pr55153.c

Modified:

trunk/gcc/ChangeLog

trunk/gcc/sched-deps.c

trunk/gcc/testsuite/ChangeLog


[Bug sanitizer/55975] asan does not work with 46 bit address space on PowerPC64

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


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



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-16 
11:50:47 UTC ---

I think for 44-46 bits we can still make it constant.  But generally, the

constructors of libasan are usually run from the stack of the initial thread,

so it should be enough to look at address of any local variable and check if it

is around (1  44) - epsilon or (1  46) - epsilon.


[Bug fortran/52865] GCC can't vectorize fortran loop but able to vectorize similar c-loop

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


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



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

Created attachment 29178

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

gcc48-pr52865.patch



This untested patch makes the loop vectorizable.

Not sure if it is better this way, or with doing assignment of the condition

result into a bool and using it later (as done in the patch for the other PR).


[Bug tree-optimization/55964] [4.7 Regression] Segmentation fault with -O -ftree-loop-distribution -funswitch-loops

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



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

   |Segmentation fault with -O  |Segmentation fault with -O

   |-ftree-loop-distribution|-ftree-loop-distribution

   |-funswitch-loops|-funswitch-loops



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-16 
14:22:49 UTC ---

Fixed for 4.8+ so far.


[Bug rtl-optimization/55547] [4.8 Regression] Alias analysis does not handle AND addresses correctly

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



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

Unfortunately the fix caused some guality regressions, on x86_64 -m32

+FAIL: gcc.dg/guality/drap.c  -O1  line 21 a == 5

+FAIL: gcc.dg/guality/drap.c  -O1  line 22 b == 6

up to -Os, and

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 16 arg1 == 1

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 16 arg2 == 2

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 16 arg3 == 3

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 16 arg4 == 4

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 16 arg5 == 5

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 16 arg6 == 6

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 16 arg7 == 30

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 18 arg1 == 1

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 18 arg2 == 2

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 18 arg3 == 3

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 18 arg4 == 4

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 18 arg5 == 5

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 18 arg6 == 6

+FAIL: gcc.dg/guality/pr36728-1.c  -O1  line 18 arg7 == 30

(up to -Os),

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 16 arg1 == 1

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 16 arg2 == 2

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 16 arg3 == 3

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 16 arg4 == 4

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 16 arg5 == 5

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 16 arg6 == 6

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 16 arg7 == 30

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 18 arg1 == 1

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 18 arg2 == 2

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 18 arg3 == 3

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 18 arg4 == 4

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 18 arg5 == 5

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 18 arg6 == 6

+FAIL: gcc.dg/guality/pr36728-2.c  -O1  line 18 arg7 == 30

(up to -Os),

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 14 arg1 == 1

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 14 arg2 == 2

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 14 arg3 == 3

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 14 arg4 == 4

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 14 arg5 == 5

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 14 arg6 == 6

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 14 arg7 == 30

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 16 arg1 == 1

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 16 arg2 == 2

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 16 arg3 == 3

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 16 arg4 == 4

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 16 arg5 == 5

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 16 arg6 == 6

+FAIL: gcc.dg/guality/pr36728-3.c  -O1  line 16 arg7 == 30

(up to -Os) and finally

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 14 arg1 == 1

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 14 arg2 == 2

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 14 arg3 == 3

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 14 arg4 == 4

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 14 arg5 == 5

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 14 arg6 == 6

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 14 arg7 == 30

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 16 arg1 == 1

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 16 arg2 == 2

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 16 arg3 == 3

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 16 arg4 == 4

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 16 arg5 == 5

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 16 arg6 == 6

+FAIL: gcc.dg/guality/pr36728-4.c  -O1  line 16 arg7 == 30

(up to -Os), and similarly for x86_64 -m64 (fewer 36728-*.c regressions, but

still some and all drap.c regressions).


[Bug target/56005] [4.8 Regression] FAIL: gcc.target/i386/pr45352.c (internal compiler error)

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



   Priority|P3  |P1

 Status|UNCONFIRMED |NEW

   Last reconfirmed||2013-01-16

 CC||jakub at gcc dot gnu.org

   Target Milestone|--- |4.8.0

 Ever Confirmed|0   |1



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

See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55153#c4

Let's close PR55153 as fixed and keep this PR to track the regression the fix

caused.


[Bug rtl-optimization/55153] [4.8 Regression] ICE: in begin_move_insn, at sched-ebb.c:205 with -fsched2-use-superblocks and __builtin_prefetch

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-16 
15:41:46 UTC ---

Fixed, the regression caused by the fix is tracked now as PR56005.


[Bug c++/55742] [4.8 regression] __attribute__ in class function declaration cause prototype does not match errors.

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


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



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

The actual merging of target attribute isn't that important, what would be more

important is that other attributes are merged together in that case and the

decls treated as the same thing.



Anyway, with target(any) attribute, what would happen for

void foo () __attribute__((target (avx)));

void foo () __attribute__((target (any)));

void foo () {}

Is the definition any, something else?


[Bug fortran/52865] GCC can't vectorize fortran loop but able to vectorize similar c-loop

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


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



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

Author: jakub

Date: Wed Jan 16 16:05:27 2013

New Revision: 195241



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

Log:

PR fortran/52865

* trans-stmt.c (gfc_trans_do): Put countm1-- before conditional

and use value of countm1 before the decrement in the condition.



Modified:

trunk/gcc/fortran/ChangeLog

trunk/gcc/fortran/trans-stmt.c


[Bug rtl-optimization/55547] [4.8 Regression] Alias analysis does not handle AND addresses correctly

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


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



--- Comment #12 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-16 
16:31:10 UTC ---

Ah, hjl opened PR56006 to track #c11.


[Bug debug/56006] [4.8 Regression] Many guality testsuite failures

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2013-01-16

 CC||aoliva at gcc dot gnu.org,

   ||jakub at gcc dot gnu.org

   Target Milestone|--- |4.8.0

 Ever Confirmed|0   |1



--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-16 
16:33:47 UTC ---

Caused by http://gcc.gnu.org/viewcvs?root=gccview=revrev=195227

See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55547#c11


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

2013-01-16 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



 Status|UNCONFIRMED |RESOLVED

 Resolution||FIXED



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

Assuming fixed.


[Bug rtl-optimization/56005] [4.8 Regression] FAIL: gcc.target/i386/pr45352.c (internal compiler error)

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-16 
18:36:47 UTC ---

Fixed.


[Bug debug/56006] [4.8 Regression] Many guality testsuite failures

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


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



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

The second patch in http://gcc.gnu.org/ml/gcc-patches/2013-01/msg00822.html

(which is waiting for Uros' bootstrap/regtest on alpha AFAIK) seems to fix

these regressions.


[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-16 Thread jakub at gcc dot gnu.org


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



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-16 
23:07:19 UTC ---

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

fixed this (so, most likely reproduceable by disabling LRA).


[Bug middle-end/56015] [4.6/4.7/4.8 Regression] expand expands p[9] = COMPLEX_EXPR -IMAGPART_EXPR p[9], REALPART_EXPR p[9]; incorrectly.

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |ASSIGNED

 CC||jakub at gcc dot gnu.org

  Known to work||4.1.2

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

   |gnu.org |

   Target Milestone|--- |4.6.4

Summary|expand expands p[9] =   |[4.6/4.7/4.8 Regression]

   |COMPLEX_EXPR|expand expands p[9] =

   |-IMAGPART_EXPR p[9], |COMPLEX_EXPR

   |REALPART_EXPR p[9];  |-IMAGPART_EXPR p[9],

   |incorrectly.|REALPART_EXPR p[9];

   ||incorrectly.



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-17 
10:30:11 UTC ---

Works correctly with 4.1.2, where we had

  CR.108 = REALPART_EXPR p[0];

  REALPART_EXPR p[0] = -IMAGPART_EXPR p[0];

  IMAGPART_EXPR p[0] = CR.108;

in the *.optimized dump.  Thus a regression.


[Bug middle-end/56015] [4.6/4.7/4.8 Regression] expand expands p[9] = COMPLEX_EXPR -IMAGPART_EXPR p[9], REALPART_EXPR p[9]; incorrectly.

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


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



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

Created attachment 29189

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

gcc48-pr56015.patch



Untested fix.


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

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


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



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-17 
10:45:20 UTC ---

I don't care much about the error wording, I've put into dg-error just what gcc

was reporting before (and after it emitted ICE).


[Bug target/56010] Powerpc, -mcpu=native and -mtune=native use the wrong name for target 7450

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||dje at gcc dot gnu.org,

   ||jakub at gcc dot gnu.org



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

Seems the elf_platform () returned strings need some adjustment to match the

RS6000_CPU names.  Grepping Linux kernel, elf_platform can return e.g.

pa6t

power3

power4

power5

power5+

power6

power6x

power7

power7+

power8

powerpc

ppc403

ppc405

ppc440

ppc440gp

ppc470

ppc5554

ppc601

ppc603

ppc604

ppc7400

ppc7450

ppc750

ppc823

ppc8540

ppc8548

ppc970

ppca2

ppc-cell-be

ppce500mc

ppce5500

ppce6500



so, supposedly initialy ppc prefix, if any, should be dropped, ppc-cell-be

should be replaced by cell and most likely the string checked against the

asm_names[].cpu strings.  There are other minor differences, e.g. kernel has

ppc440 and ppc440gp, while gcc 440fp and 440 (do they match in this order, or

differently?).


[Bug c/56018] Access to member of unnamed union variable in structure

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


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



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 #1 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-17 
11:14:13 UTC ---

This has nothing to do with gcc, the header file has:

union

  {

/* Used if SA_SIGINFO is not set.  */

__sighandler_t sa_handler;

/* Used if SA_SIGINFO is set.  */

void (*sa_sigaction) (int, siginfo_t *, void *);

  }

__sigaction_handler;

# define sa_handler __sigaction_handler.sa_handler

# define sa_sigaction   __sigaction_handler.sa_sigaction



And, using __sigaction_handler.sa_handler in your source file is wrong,

__sigaction_handler is reserved for the implementation (and so is sa_handler in

POSIX if you include signal.h header).


[Bug lto/45375] [meta-bug] Issues with building Mozilla with LTO

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



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

lto_post_options ?


[Bug target/49069] [4.6/4.7/4.8 Regression] ICE in gen_cstoredi4, at config/arm/arm.md:7554

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org,

   ||nickc at gcc dot gnu.org,

   ||ramana at gcc dot gnu.org



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

The issue isn't latent, can be still reproduced with:

/* PR target/49069 */

/* { dg-do compile } */

/* { dg-options -Os -fno-tree-forwprop -Wno-div-by-zero } */



int a;

const unsigned long long b[1] = { 1ULL };

extern void bar (int);



void

foo (void)

{

  for (a = 0; a == 1; a = 2)

;

  bar (b[0] == (a == 0 ? a : a / 0));

}



Which also shows that the middle-end usually optimizes that well (cf. #c4), but

the arm backend relying on that always happening is just a very bad assumption.


[Bug target/49069] [4.6/4.7/4.8 Regression] ICE in gen_cstoredi4, at config/arm/arm.md:7554

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


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



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

Created attachment 29193

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

gcc48-pr49069-1.patch



One possible fix.


[Bug target/49069] [4.6/4.7/4.8 Regression] ICE in gen_cstoredi4, at config/arm/arm.md:7554

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


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



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

Created attachment 29194

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

gcc48-pr49069-2.patch



Another possible fix.  Or Steven's fix (+ testcase) if it works.  It will be

optimized by RTL optimizers anyway.  Just asserting that an unlikely, but

possible thing, won't happen, is wrong.  Can we get this fixed for 4.8?


[Bug rtl-optimization/55273] [4.8 Regression] ICE in iv_number_of_iterations, at loop-iv.c:2819

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


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



--- Comment #9 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-17 
16:36:53 UTC ---

Author: jakub

Date: Thu Jan 17 16:36:43 2013

New Revision: 195275



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

Log:

PR tree-optimizatoin/55273

* gcc.c-torture/compile/pr55273.c: New testcase.



* loop-iv.c (iv_number_of_iterations): Consider zero iteration case.



Added:

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

  - copied unchanged from r195274,

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

Removed:

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

Modified:

trunk/gcc/ChangeLog

trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/55273] [4.8 Regression] ICE in iv_number_of_iterations, at loop-iv.c:2819

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|ASSIGNED|RESOLVED

 CC||jakub at gcc dot gnu.org

 Resolution||FIXED



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

Author: hubicka

Date: Thu Jan 17 16:27:23 2013

New Revision: 195274



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

Log:



PR tree-optimizatoin/51083



* gcc.c-torture/compile/pr51083.c: New testcase.



* loop-iv.c (iv_number_of_iterations): Consider zero iteration case.



Added:

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

Modified:

trunk/gcc/ChangeLog

trunk/gcc/loop-iv.c

trunk/gcc/testsuite/ChangeLog


[Bug sanitizer/55739] asan doesn't work on common symbols

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


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



--- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-17 
16:49:58 UTC ---

Ugh, no, that is way too premature.  This really shouldn't be a dynamic

relocation.  And asan shouldn't be registering the same (common or in the end

non-common) var multiple times from different shared libraries or binaries.



For this we should have a way to refer using non-dynamic relocation to the

common symbol (like R_*_32 or R_*_64, but resolved to the local copy of the

symbol, not global one; or can we have .hidden aliases to common symbols?), and

this size relocation should be also resolved at link time.


[Bug sanitizer/55739] asan doesn't work on common symbols

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


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



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

No idea why you keep mentioning

   .quadcommon_data

   .quadcommon_data@size

   .quadcommon_data@size + 40

That is nothing even close to what asan needs.  Asan for what is normally

emitted e.g. as:

.comm common_data,15,4

needs to emit

.comm common_data,64,32

instead, and then a hidden alias to common_data (currently not allowed by as)

or some new relocations which will result in the address of the common_data

copy in current executable resp. shared library, followed by 15 (the size of

the real common_data), followed by common_data@size (which will be either 15 or

64, depending on how large is common_data actually allocated).

This still relies on the the linker always choosing the highest alignment from

all the alignments of the same var (because libasan relies that all such

variables are at least 32 bytes aligned), and if merging of common vars in

whatever order always results in highest size being picked, then we even don't

need any of this @size stuff at all.  The problem is that if you link say a

shared library or executable where you have some -fsanitize=address compiled

common vars and then some non-sanitized object with the var initialized (i.e.

non-common), then the non-common var wins, but a) doesn't get appropriately

aligned (so, impossible to be passed to asan register function), and b) not

appropriately sized.

Consider: 1.c:

asm (.globl foo; .comm foo,4,4;);

2.c:

asm (.globl foo; .comm foo,64,32;);

3.c:

asm (.globl foo; .comm foo,4,4;);

4.c:

int foo = 6;



(1.c and 3.c emulate -fno-sanitize=address common var, 4.c non-sanitized

non-common var, 2.c sanitized common var).  Now,

gcc -shared -fpic -o test.so 1.c 2.c 3.c

seems to DTRT, foo is 32-byte aligned and 64-bytes long, so we could register

it as foo's hidden alias, 4, 64.  But if you

gcc -shared -fpic -o test.so 1.c 2.c 3.c 4.c

you get:

/usr/bin/ld: Warning: alignment 4 of symbol `foo' in /tmp/ccoadfJM.o is smaller

than 32 in /tmp/cc8Dhbe7.o

/usr/bin/ld: Warning: size of symbol `foo' changed from 64 in /tmp/cc8Dhbe7.o

to 4 in /tmp/ccoadfJM.o



No @size stuff helps with this.


[Bug libffi/56000] FAIL: libffi.call/cls_uchar_va.c -O0 -W -Wall output pattern test

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-17 
18:27:47 UTC ---

Should be fixed now.


[Bug debug/56006] [4.8 Regression] Many guality testsuite failures

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-18 
11:06:49 UTC ---

Author: aoliva

Date: Fri Jan 18 10:57:36 2013

New Revision: 195289



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

Log:

PR rtl-optimization/55547

PR rtl-optimization/53827

PR debug/53671

PR debug/49888

* alias.c (offset_overlap_p): New, factored out of...

(memrefs_conflict_p): ... this.  Use absolute sizes.  Retain

the conservative special case for symbolic constants.  Don't

adjust zero sizes on alignment.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/alias.c


[Bug middle-end/56022] [4.8 regression] ICE (segfault) at convert_memory_address_addr_space (explow.c:334)

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org,

   ||jamborm at gcc dot gnu.org



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

Caused by http://gcc.gnu.org/viewcvs?root=gccview=revrev=191577


[Bug sanitizer/55975] asan does not work with 46 bit address space on PowerPC64

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


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



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

But why doesn't the 1  41 version work with both 44 and 46-bit VA?

It should be:

   || `[0x0a00, 0x3fff]` || HighMem||

   || `[0x0340, 0x09ff]` || HighShadow ||

   || `[0x0240, 0x033f]` || ShadowGap  ||

   || `[0x0200, 0x023f]` || LowShadow  ||

   || `[0x, 0x01ff]` || LowMem ||

then, which IMHO should work just fine even if 0x1000 through

0x3fff is unavailable.


[Bug sanitizer/55975] asan does not work with 46 bit address space on PowerPC64

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


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



--- Comment #20 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-18 
13:52:02 UTC ---

Ah yes, it can't be | SHADOW_OFFSET then, but has to be + SHADOW_OFFSET.  + is

what gcc emits (the reason for that was primarily that it resulted in better

code on x86_64/i686).  So perhaps for targets where SHADOW_OFFSET is non-zero

and below (or equal to) 12.5% of maximum user address space, we are free to use

either | or +, but for other targets (for now ppc64) it must use +?


[Bug c++/55742] [4.8 regression] __attribute__ in class function declaration cause prototype does not match errors.

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


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



--- Comment #32 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-18 
14:18:58 UTC ---

Created attachment 29207

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

gcc48-pr55742.patch



This bug is open for way too long given its severity, so let's start talking

over patches.



This patch attempts to implement what I understand from Jason's comments, just

with default instead of any, because it is indeed the default target

attribute (whatever you specify on the command line).



Say on:

void foo ();

void foo () __attribute__((target (avx)));

void foo () __attribute__((target (default)));

__attribute__((target (default))) void foo ()

{

}

__attribute__((target (avx))) void foo ()

{

}

void (*fn) () = foo;



first we merge the first two decls, because only if target attribute is present

on both, we consider it for multi-versioning, for compatibility with 4.7 and

older.  On e.g.

void foo ();

void foo () __attribute__((target (sse4)));

void foo () __attribute__((target (default)));

void foo ()

{

}

we reject the last fn definition, because at that point foo is already known to

be multi-versioned, thus it is required that target attribute is specified for

foo (either default, or some other).  Unfortunately, for this case the error

is reported twice for some reason.



The #c0 testcase now compiles.



Now, the issues I discovered with multiversioning, still unfixed by the patch:

1) the mv*.C testcases should be moved, probably to g++.dg/ext/mv*.C

2) can you please explain the mess in handle_target_attribute?

  /* Do not strip invalid target attributes for targets which support function

 multiversioning as the target string is used to determine versioned

 functions.  */

  else if (! targetm.target_option.valid_attribute_p (*node, name, args,

  flags)

! targetm.target_option.supports_function_versions ())

*no_add_attrs = true;

Why do you need that?  Consider complete garbage in target attribute arguments,

which is errored about, but the above for i386/x86_64 keeps the target

attribute around anyway, leading to lots of ICEs everywhere:

Consider e.g.:

__attribute__((target (default))) void foo (void)

{

}

__attribute__((target (128))) void foo (void)

{

}

3) the multiversioning code assumes that target has a single argument, but it

can have more than one.  Say for:

__attribute__((target (avx,popcnt))) void foo (void)

{

}

__attribute__((target (popcnt,avx))) void bar (void)

{

}

the compiler handles those two as equivalent, but with -Dbar=foo

multi-versioning only considers the first string out of that.


[Bug sanitizer/55975] asan does not work with 46 bit address space on PowerPC64

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


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



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

Forcing everything to be built as -pie is a non-starter.  The 5% just aren't

worth the trouble.  Especially, how are you going to deal with say a

-fsanitize=address shared library built with 1  44 shadow offset and a PIE

binary built with 0 shadow offset?


[Bug tree-optimization/56029] [4.8 Regression] ICE: verify_gimple failed, location references block not in block tree

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


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



--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-18 
16:54:56 UTC ---

Created attachment 29209

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

gcc48-pr56029.patch



The bug is that neither reserve_phi_args_for_new_edge nor remove_phi_arg_num

clears gimple_phi_arg_location (only resize_phi_node does), so if some

GIMPLE_PHI references some BLOCK in some argument, then that phi is shrunk a

little bit where that argument is no longer used, then we remove unused blocks

and then grow the same PHI again and nothing overrides gimple_phi_arg_location

of the added argument, the old location magically reappears.



This patch fixes this on the reserve_phi_args_for_new_edge side.  Of course the

question is also why the caller doesn't set gimple_phi_arg_location for

something, but I'd say the code just should be robust in any case and when it

isn't called explicitly, UNKNOWN_LOCATION should be in there.


[Bug tree-optimization/56029] [4.8 Regression] ICE: verify_gimple failed, location references block not in block tree

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



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



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-18 
16:56:34 UTC ---

Created attachment 29210

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

gcc48-pr56029-2.patch



Alternatively the location can be reset when shrinking the PHI node.

I prefer the first patch though (and am going to bootstrap/regtest it).


[Bug middle-end/56015] [4.6/4.7/4.8 Regression] expand expands p[9] = COMPLEX_EXPR -IMAGPART_EXPR p[9], REALPART_EXPR p[9]; incorrectly.

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


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



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

Author: jakub

Date: Fri Jan 18 17:15:07 2013

New Revision: 195301



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

Log:

PR middle-end/56015

* expr.c (expand_expr_real_2) case COMPLEX_EXPR: Handle

the case where writing real complex part of target modifies

op1.



* gfortran.dg/pr56015.f90: New test.



Added:

trunk/gcc/testsuite/gfortran.dg/pr56015.f90

Modified:

trunk/gcc/ChangeLog

trunk/gcc/expr.c

trunk/gcc/testsuite/ChangeLog


[Bug middle-end/56015] [4.6/4.7 Regression] expand expands p[9] = COMPLEX_EXPR -IMAGPART_EXPR p[9], REALPART_EXPR p[9]; incorrectly.

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


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



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] expand

   |expand expands p[9] =   |expands p[9] = COMPLEX_EXPR

   |COMPLEX_EXPR|-IMAGPART_EXPR p[9],

   |-IMAGPART_EXPR p[9], |REALPART_EXPR p[9];

   |REALPART_EXPR p[9];  |incorrectly.

   |incorrectly.|

  Known to fail|4.8.0   |



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-18 
17:25:46 UTC ---

Fixed on the trunk so far.


[Bug c++/55742] [4.8 regression] __attribute__ in class function declaration cause prototype does not match errors.

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


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



--- Comment #35 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-18 
17:51:42 UTC ---

Created attachment 29211

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

gcc48-pr55742.patch



Updated patch with ChangeLog entry and code to prevent issuing errors for the

same bug multiple times.



As for documentation, the multiversioning was checked in without proper

documentation, so there is nothing to adjust in documentation, the feature

simply needs documentation written.



1), 2) and 3) are unsolved by the patch, similarly extensive test coverage (the

current one is insufficient).  Perhaps that can be solved incrementally?

I'm going to bootstrap/regtest this version now.


[Bug tree-optimization/56029] [4.8 Regression] ICE: verify_gimple failed, location references block not in block tree

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


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



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-18 
20:24:49 UTC ---

Author: jakub

Date: Fri Jan 18 20:24:34 2013

New Revision: 195304



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

Log:

PR tree-optimization/56029

* tree-phinodes.c (reserve_phi_args_for_new_edge): Set

gimple_phi_arg_location for the new arg to UNKNOWN_LOCATION.



* g++.dg/torture/pr56029.C: New test.



Added:

trunk/gcc/testsuite/g++.dg/torture/pr56029.C

Modified:

trunk/gcc/ChangeLog

trunk/gcc/testsuite/ChangeLog

trunk/gcc/tree-phinodes.c


[Bug tree-optimization/56029] [4.8 Regression] ICE: verify_gimple failed, location references block not in block tree

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


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



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-18 
20:28:12 UTC ---

Fixed.


[Bug target/55433] [4.8 Regression][LRA] ICE on excessive reloads

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 CC||jakub at gcc dot gnu.org

 Resolution||FIXED



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-18 
20:30:39 UTC ---

Fixed.


[Bug c++/55742] [4.8 regression] __attribute__ in class function declaration cause prototype does not match errors.

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


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



--- Comment #39 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-19 
10:14:04 UTC ---

Then to fix that perhaps we want to change ix86_valid_target_attribute_tree and

its caller.

Currently ix86_valid_target_attribute_tree returns NULL_TREE both when the

target string(s) are invalid (i.e. when ix86_valid_target_attribute_inner_p

returned false) and when the target flags match the default ones.

So, let's change ix86_valid_target_attribute_tree to e.g. return

error_mark_node

instead of NULL_TREE if the attribute is invalid, and NULL_TREE only if it

matches the default.  Then, ix86_valid_target_attribute_p could treat

new_target

== error_mark_node similarly to new_target == NULL_TREE with the exception of

ret.


[Bug c++/55742] [4.8 regression] __attribute__ in class function declaration cause prototype does not match errors.

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


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



  Attachment #29207|0   |1

is obsolete||



--- Comment #40 from Jakub Jelinek jakub at gcc dot gnu.org 2013-01-19 
10:28:02 UTC ---

Created attachment 29217

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

gcc48-pr55742-2.patch



The following I mean (incremental patch).  No test coverage for that, of course

that needs to be added.



BTW, I've noticed wrong ChangeLog entries, your gcc/ChangeLog-2012 CL entries

refer to c-family/ (and cp/) files, while those should be moved (without

prefix) to corresponding c-family/ChangeLog resp. cp/ChangeLog-2012.


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