[Bug c++/6273] [DR 502] Dependency of nested enumerations and enumerators

2014-05-12 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=6273

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 CC||jason at gcc dot gnu.org,
   ||paolo.carlini at oracle dot com

--- Comment #16 from Paolo Carlini paolo.carlini at oracle dot com ---
Jason, I'm having a look to this, and I'm not sure there is still something to
do. For example, our type_dependent_type_p returns true for the snippet in 1)
of Core/502. As regards the reduced testcase in Comment #2 here, we still
reject it, as does clang too, but we accept (as does clang) it if we change
operator+ to be constexpr.


[Bug libstdc++/61143] [4.9/4.10 Regression] Arithmetic exception on emplacing into unordered_map moved out

2014-05-12 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61143

--- Comment #5 from Jonathan Wakely redi at gcc dot gnu.org ---
(In reply to François Dumont from comment #4)
 I simply considered that the moved container instance wouldn't be reused
 this way, just potentially for some immutable operations. I should have
 checked the Standard regarding the meaning of valid by unspecified state.

Objects can definitely be re-used after being moved from. This has to work.

 There are indeed numerous places to consider to make this code and any other
 mutable code valid. I would also prefer to avoid those checks but I remember
 that I needed to leave the container in this state for exception guaranty
 reasons in some move operations. I will recall rational of this as soon as I
 can take a look to the code.

We wanted the move constructor to be noexcept. That's important, but so is
being able to reuse the object again.

[Bug c++/6273] [DR 502] Dependency of nested enumerations and enumerators

2014-05-12 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=6273

--- Comment #17 from Paolo Carlini paolo.carlini at oracle dot com ---
... of course I meant that dependent_type_p returns true for enum E therein.


[Bug libstdc++/61143] [4.9/4.10 Regression] Arithmetic exception on emplacing into unordered_map moved out

2014-05-12 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61143

--- Comment #6 from Marc Glisse glisse at gcc dot gnu.org ---
There was that whole discussion on how much sense it makes to make move
constructors noexcept when default constructors aren't...


[Bug libgcc/61152] New: Missing GCC Runtime Library Exception in some files that are included in libgcc

2014-05-12 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61152

Bug ID: 61152
   Summary: Missing GCC Runtime Library Exception in some files
that are included in libgcc
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: trivial
  Priority: P3
 Component: libgcc
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gjl at gcc dot gnu.org

libgcc sources are not yet separated completey from the compiler, i.e. it
includes tm.h which in turn will include files from the compiler backend like
arm.h.

As such files go into libgcc, they should contain the GCC Runtime Library
Exception (RLE) in their license headers.

I know that these files actually don't add executable code to libgcc and that
the FSF is fine without RLE in these files, yet there are potential users of
GCC that are very concerned about linking their code against libgcc and about
the non-RLE files that are part of the libgcc sources: as soon as a single file
that goes into libgcc (e.g. by include) is GPL but does not contain the RLE,
they won't use GCC as a whole.

Thus, adding RLE to these files can greatly increase acceptance of GCC/libgcc.


[Bug rtl-optimization/61058] [4.7/4.8/4.9/4.10 Regression] ICE: RTL check: expected elt 3 type 'B', have '0' (rtx barrier) in distance_agu_use_in_bb, at config/i386/i386.c:16740 with __builtin_unreach

2014-05-12 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61058

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org

--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org ---
I think the buggy pass here is:
static unsigned int
cleanup_barriers (void)
{
  rtx insn, next, prev;
  for (insn = get_insns (); insn; insn = next)
{
  next = NEXT_INSN (insn);
  if (BARRIER_P (insn))
{
  prev = prev_nonnote_insn (insn);
  if (!prev) 
continue;
  if (BARRIER_P (prev))
delete_insn (insn);
  else if (prev != PREV_INSN (insn))
reorder_insns_nobb (insn, insn, prev);
}
}
  return 0;
}

At the start of that pass we have:
(note 3 1 9 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn/f 9 3 10 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [0  S8 A8])
(reg/f:DI 6 bp)) pr61058.c:3 -1
 (nil))
(insn/f 10 9 11 2 (set (reg/f:DI 6 bp)
(reg/f:DI 7 sp)) pr61058.c:3 -1
 (nil))
(note 11 10 2 2 NOTE_INSN_PROLOGUE_END)
(note 2 11 5 2 NOTE_INSN_FUNCTION_BEG)
(barrier 5 2 8)
(note 8 5 0 NOTE_INSN_DELETED)

where BB_HEAD (bb2) is note 3 and BB_END (bb2) is note 2, note 8 has been added
by LRA (but reload does that too AFAIK), both barrier and note are outside of
the bb 2.
Now, the above reorders the barrier after insn 10, making it part of bb2
because BB_END (bb2) isn't adjusted.

So, either cleanup_barriers should not move anything here (e.g. because prev
doesn't satisfy control_flow_insn_p (prev)), and/or, of it decides to move
something, it has to take care of adjusting the affected basic blocks (but how?
Would we keep the two notes (11 and 2) without basic block).
Do we need the cleanup_barriers pass at all these days?


[Bug target/60617] [4.8 Regression] unable to find a register to spill in class 'LO_REGS'

2014-05-12 Thread venkataramanan.kumar at amd dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60617

--- Comment #3 from Venkataramanan venkataramanan.kumar at amd dot com ---
The bug is now hidden in trunk by revision 209897

The patch Remove PUSH_ARGS_REVERSED from the RTL expander
(reference below) seems to change the way arguments are handled in RTL. 

Ref:
http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=bf29c577b9128551d76adc5b0331d375be49d7d3


[Bug rtl-optimization/61058] [4.7/4.8/4.9/4.10 Regression] ICE: RTL check: expected elt 3 type 'B', have '0' (rtx barrier) in distance_agu_use_in_bb, at config/i386/i386.c:16740 with __builtin_unreach

2014-05-12 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61058

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org ---
On the other side, pass_cleanup_barriers is performed after pass_free_cfg, so
making it unconditionally cfg-aware is not going to work, it is just that i386
(as well as few other targets) calls compute_bb_for_insn in its mach_reorg pass
and doesn't free_bb_for_insn afterwards.  So perhaps do nothing if
BLOCK_FOR_INSN (prev), or call reorder_insns instead of reorder_insns_nobb if
BLOCK_FOR_INSN (prev)?  Though, calling reorder_insns there doesn't seem to
work either, it isn't prepared to handle the case of moving a BARRIER into the
middle of some bb.


[Bug target/60617] [4.8 Regression] unable to find a register to spill in class 'LO_REGS'

2014-05-12 Thread venkataramanan.kumar at amd dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60617

--- Comment #4 from Venkataramanan venkataramanan.kumar at amd dot com ---
Reverting this patch in 209897 bug still occurs in trunk with -mno-lra.

SPILL failure occurs for regno 110 (dst operand) in below instruction 

(insn 634 633 635 27 (parallel [
(set (reg:SI 3 r3)
(ior:SI (eq:SI (reg/v:SI 110 [ dst ]) == This operand r5 is
registers gets assigned
(reg/v:SI 112 [ op2 ]))
(eq:SI (reg/v:SI 110 [ dst ]) == This operand
(reg/v:SI 111 [ op1 ]
(clobber (reg:CC 100 cc))
]) ../Source/JavaScriptCore/jit/JITArithmetic32_64.cpp:179 300
{*ior_scc_scc

First observation is that reload is not able to reuse r5 that was used in
second reload in operation for the same register id 110 dst


The IRA Dump shows.

(insn 632 631 633 27 (set (reg:SI 1 r1)
(reg/v:SI 110 [ dst ]))
../Source/JavaScriptCore/jit/JITArithmetic32_64.cpp:179 667 {*thumb2_movsi_vfp}
 (nil))
(insn 633 632 634 27 (set (reg:SI 2 r2)
(const_int 0 [0]))
../Source/JavaScriptCore/jit/JITArithmetic32_64.cpp:179 667 {*thumb2_movsi_vfp}
 (nil))
(insn 634 633 635 27 (parallel [
(set (reg:SI 3 r3)
(ior:SI (eq:SI (reg/v:SI 110 [ dst ])
(reg/v:SI 112 [ op2 ]))
(eq:SI (reg/v:SI 110 [ dst ])
(reg/v:SI 111 [ op1 ]
(clobber (reg:CC 100 cc))
]) ../Source/JavaScriptCore/jit/JITArithmetic32_64.cpp:179 300
{*ior_scc_scc}

The register operand 110 dst is already passed as argument 1 and hence gets
register r1. See insn 632.

But this is not reused by  insn 634.

However there are some other places in IRA dump where the same expression
occurs and there register r1 is used. Here operand dst 110 is marked as dead.


(insn 431 430 433 24 (set (reg:SI 1 r1)
(reg/v:SI 110 [ dst ]))
../Source/JavaScriptCore/jit/JITArithmetic32_64.cpp:388 667 {*thumb2_movsi_vfp}
 (expr_list:REG_DEAD (reg/v:SI 110 [ dst ])
(nil)))

(insn 433 431 432 24 (parallel [
(set (reg:SI 3 r3)
(ior:SI (eq:SI (reg/v:SI 112 [ op ])
(reg:SI 1 r1))
(eq:SI (reg/v:SI 111 [ op ])
(reg:SI 1 r1
(clobber (reg:CC 100 cc))
]) ../Source/JavaScriptCore/jit/JITArithmetic32_64.cpp:388 300
{*ior_scc_scc 


Still working on why IRA is not replacing the operand with R1 here, but
replaces in other places.


[Bug middle-end/61141] [4.10 Regression] c-common.c:1502:1: ICE: in reset_insn_used_flags, at emit-rtl.c:2677

2014-05-12 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61141

--- Comment #2 from John David Anglin danglin at gcc dot gnu.org ---
In the Linux case, we also have a note in a NOTE_INSN_DELETED delayed
branch sequence:

(gdb) ignor 1 9396470
Will ignore next 9396470 crossings of breakpoint 1.
(gdb) r
Starting program: /home/dave/gnu/gcc/objdir/gcc/../prev-gcc/cc1plus
-fpreprocessed c-common.ii -quiet -dumpbase c-common.c -auxbase-strip
c-family/c-common.o -g -O2 -Wextra -Wall -Wno-narrowing -Wwrite-strings
-Wcast-qual -Wsuggest-attribute=format -Woverloaded-virtual -Wpedantic
-Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -version
-fno-exceptions -fno-rtti -fasynchronous-unwind-tables -fno-common -o
c-common.s
GNU C++ (GCC) version 4.10.0 20140509 (experimental) [trunk revision 210292]
(hppa-linux-gnu)
compiled by GNU C version 4.9.0, GMP version 6.0.0, MPFR version 3.1.2-p3,
MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU C++ (GCC) version 4.10.0 20140509 (experimental) [trunk revision 210292]
(hppa-linux-gnu)
compiled by GNU C version 4.9.0, GMP version 6.0.0, MPFR version 3.1.2-p3,
MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 58ab86f8e667281199dd64bcf3941150

Breakpoint 1, reset_insn_used_flags (insn=0xf7abc190)
at ../../gcc/gcc/emit-rtl.c:2677
2677  gcc_assert (INSN_P (insn));
(gdb) p debug_rtx(insn)
(note 5678 5679 5680 NOTE_INSN_DELETED)

(gdb) p debug_rtx_list (insn, -7)
(insn:TI 5677 5676 12940 (set (reg:SI 25 %r25)
(reg/v/f:SI 6 %r6 [orig:914 expr ] [914])) ../../gcc/gcc/tree.h:3183 40
{*pa.md:2211}
 (expr_list:REG_DEAD (reg/v/f:SI 6 %r6 [orig:914 expr ] [914])
(nil)))

(note 12940 5677 25145 (var_location in_init (entry_value:QI (reg:QI 25 %r25 [
in_init ]))) NOTE_INSN_VAR_LOCATION)

(insn 25145 12940 5680 (sequence [
(call_insn:TI 5679 12940 5678 (parallel [
(call (mem:SI (symbol_ref/v:SI
(@_Z25tree_operand_check_failediPK9tree_nodePKciS3_) [flags 0x241]
function_decl 0xfa55a500 tree_operand_check_failed) [0
tree_operand_check_failed S4 A32])
(const_int 24 [0x18]))
(clobber (reg:SI 1 %r1))
(clobber (reg:SI 2 %r2))
(use (const_int 0 [0]))
]) ../../gcc/gcc/tree.h:3183 195 {call_symref}
 (expr_list:REG_DEAD (reg:SI 26 %r26)
(expr_list:REG_DEAD (reg:SI 25 %r25)
(expr_list:REG_DEAD (reg:SI 24 %r24)
(expr_list:REG_DEAD (reg:SI 23 %r23)
(expr_list:REG_NORETURN (const_int 0 [0])
(nil))
(expr_list:SI (use (reg:SI 26 %r26))
(expr_list:SI (use (reg:SI 25 %r25))
(expr_list:SI (use (reg:SI 24 %r24))
(expr_list:SI (use (reg:SI 23 %r23))
(expr_list:SI (use (mem/f:SI (plus:SI (reg/f:SI
30 %r30)
(const_int -52
[0xffcc])) [0  S4 A32]))
(nil)))
(note 5678 5679 5680 NOTE_INSN_DELETED)
]) ../../gcc/gcc/tree.h:3183 -1
 (nil))

(barrier 5680 25145 12943)

(note 12943 5680 12942 (expr_list:REG_DEP_TRUE (concat:SI (reg:SI 26 %r26)
(const_int 1 [0x1]))
(expr_list:REG_DEP_TRUE (concat:SI (reg:SI 25 %r25)
(reg/v/f:SI 6 %r6 [orig:914 expr ] [914]))
(expr_list:REG_DEP_TRUE (concat:SI (reg:SI 24 %r24)
(symbol_ref/v/f:SI (*.LC0) [flags 0x202] var_decl 0xf845cd80
*.LC0))
(expr_list:REG_DEP_TRUE (concat:SI (reg:SI 23 %r23)
(const_int 1205 [0x4b5]))
(expr_list:REG_DEP_TRUE (concat:SI (mem/f:SI (plus:SI (reg/f:SI
30 %r30)
(const_int -52 [0xffcc])) [0  S4
A32])
(symbol_ref/v:SI
(_ZZL21c_fully_fold_internalP9tree_nodebPbS1_E12__FUNCTION__) [flags 0x202]
var_decl 0xfa3ea0c0 __FUNCTION__))
(nil)) NOTE_INSN_CALL_ARG_LOCATION)

(note/c 12942 12943 12941 (var_location kind (nil)) NOTE_INSN_VAR_LOCATION)

(note/c 12941 12942 12944 (var_location __c (nil)) NOTE_INSN_VAR_LOCATION)

$3 = void


[Bug middle-end/61141] [4.10 Regression] c-common.c:1502:1: ICE: in reset_insn_used_flags, at emit-rtl.c:2677

2014-05-12 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61141

--- Comment #3 from John David Anglin danglin at gcc dot gnu.org ---
(gdb) p *pass
$4 = {pass_data = {type = RTL_PASS, name = 0x1afa7c0 final, 
optinfo_flags = 0, has_execute = true, tv_id = TV_FINAL, 
properties_required = 0, properties_provided = 0, 
properties_destroyed = 0, todo_flags_start = 524288, 
todo_flags_finish = 0}, 
  _vptr.opt_pass = 0x1afa758 vtable for (anonymous namespace)::pass_final+8, 
  sub = 0x0, next = 0x0, static_pass_number = 251, 
  graph_dump_initialized = false, m_ctxt = 0x1ed64f8}


[Bug target/59904] [ARM] tls-reload-1.c fails

2014-05-12 Thread christophe.lyon at st dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59904

--- Comment #3 from christophe.lyon at st dot com ---
Sorry I no longer have the elf file available.
I've just looked at the current trunk status and I have a failure at link time
for these tests:
ld: gcc_tg.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be
used when making a shared object; recompile with -fPIC
gcc_tg.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
compiler exited with status 1

Not sure if it's a problem with the binutils I use (linaro-2.24-2013.12) or a
known problem with the GCC test?


[Bug middle-end/61141] [4.10 Regression] c-common.c:1502:1: ICE: in reset_insn_used_flags, at emit-rtl.c:2677

2014-05-12 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61141

--- Comment #4 from John David Anglin danglin at gcc dot gnu.org ---
(gdb) p *fn
$5 = {eh = 0xfa483f48, cfg = 0xf7f60a10, gimple_body = 0x0, 
  gimple_df = 0xf7ba6900, x_current_loops = 0x0, su = 0x0, 
  value_histograms = 0x0, decl = 0xf8f39100, static_chain_decl = 0x0, 
  nonlocal_goto_save_area = 0x0, local_decls = 0x0, cilk_frame_decl = 0x0, 
  machine = 0xfabd95f8, language = 0xf93de900, used_types_hash = 0xfaba0180, 
  fde = 0xf8b9ad38, last_stmt_uid = 3927, funcdef_no = 719, 
  function_start_locus = 6286828, function_end_locus = 6403815, 
  curr_properties = 5312, last_verified = 0, cannot_be_copied_reason = 0x0, 
  va_list_gpr_size = 255, va_list_fpr_size = 255, calls_setjmp = 0, 
  calls_alloca = 0, is_cilk_function = 0, calls_cilk_spawn = 0, 
  has_nonlocal_label = 0, cannot_be_copied_set = 1, stdarg = 0, 
  after_inlining = 1, always_inline_functions_inlined = 1, 
  can_throw_non_call_exceptions = 0, can_delete_dead_exceptions = 0, 
  returns_struct = 0, returns_pcc_struct = 0, has_local_explicit_reg_vars = 0, 
  is_thunk = 0, has_force_vectorize_loops = 0, has_simduid_loops = 0, 
  tail_call_marked = 0}
(gdb) p debug_tree (fn-decl)
 function_decl 0xf8f39100 c_fully_fold_internal
type function_type 0xf8f3b600
type pointer_type 0xf9be9960 tree type union_type 0xf9be98a0
tree_node
sizes-gimplified asm_written public unsigned type_6 SI
size integer_cst 0xfad01570 constant 32
unit size integer_cst 0xfad01588 constant 4
align 32 symtab -104946992 alias set -1 canonical type 0xf9be9900
pointer_to_this pointer_type 0xfa4f62a0
SI size integer_cst 0xfad01570 32 unit size integer_cst 0xfad01588
4
align 32 symtab 0 alias set -1 canonical type 0xf8f3b660
arg-types tree_list 0xf8f38bb8 value pointer_type 0xf9be9960 tree
chain tree_list 0xf8f38bd0 value boolean_type 0xfad0a5a0 bool
chain tree_list 0xf8f38be8 value pointer_type 0xfaad38a0
chain tree_list 0xf8f38c00 value pointer_type 0xfaad38a0
chain tree_list 0xfad01db0 value void_type 0xfad0a8a0
void
pointer_to_this pointer_type 0xfa40cc00
addressable asm_written used nothrow static decl_5 decl_6 SI file
../../gcc/gcc/c-family/c-common.c line 1113 col 1 align 32 context
translation_unit_decl 0xfad09070 D.1 initial error_mark 0xfad063b0
arguments parm_decl 0xf91fb5f0 expr type pointer_type 0xf9be9960 tree
used visited unsigned SI file ../../gcc/gcc/c-family/c-common.c line
1113 col 29 size integer_cst 0xfad01570 32 unit size integer_cst 0xfad01588
4
align 32 context function_decl 0xf8f39100 c_fully_fold_internal

(reg/v/f:SI 6 %r6 [orig:914 expr ] [914]) arg-type pointer_type
0xf9be9960 tree
incoming-rtl (reg:SI 26 %r26 [ expr ])
chain parm_decl 0xf91fb6e0 in_init type boolean_type 0xfad0a5a0 bool
used visited unsigned QI file ../../gcc/gcc/c-family/c-common.c
line 1113 col 40
size integer_cst 0xfad016a8 constant 8
unit size integer_cst 0xfad016c0 constant 1
align 8 context function_decl 0xf8f39100 c_fully_fold_internal

(reg/v:SI 9 %r9 [orig:915 in_init+-3 ] [915]) arg-type
integer_type 0xfad0a360 int
incoming-rtl (reg:SI 25 %r25 [ in_init+-3 ]) chain parm_decl
0xf91fb7d0 maybe_const_operands
result result_decl 0xf91fb870 D.36357 type pointer_type 0xf9be9960 tree
unsigned ignored regdecl SI file ../../gcc/gcc/c-family/c-common.c line
1114 col 34 size integer_cst 0xfad01570 32 unit size integer_cst 0xfad01588
4
align 32 context function_decl 0xf8f39100 c_fully_fold_internal
(reg/f:SI 913 [ retval ])
full-name tree_node* c_fully_fold_internal(tree, bool, bool*, bool*)
pending-inline-info 0xf93dea68
(mem:SI (symbol_ref/v:SI (@_ZL21c_fully_fold_internalP9tree_nodebPbS1_)
[flags 0x203] function_decl 0xf8f39100 c_fully_fold_internal) [0  S4 A32])
struct-function 0xfa576478 chain var_decl 0xf8f3b3c0 fname_vars
$8 = void


[Bug target/61153] New: [ARM] vbic vorn tests fail

2014-05-12 Thread christophe.lyon at st dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61153

Bug ID: 61153
   Summary: [ARM] vbic vorn tests fail
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: christophe.lyon at st dot com

Since commit 210216 Neon intrinsics TLC - Replace intrinsics with GNU C
implementations, I have noticed regressions in the following tests:
  gcc.target/arm/neon/vbicQs16.c scan-assembler vbic[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbicQs32.c scan-assembler vbic[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbicQs64.c scan-assembler vbic[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbicQs8.c scan-assembler vbic[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbicQu16.c scan-assembler vbic[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbicQu32.c scan-assembler vbic[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbicQu64.c scan-assembler vbic[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbicQu8.c scan-assembler vbic[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbics16.c scan-assembler vbic[ \t]+[dD][0-9]+,
[dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbics32.c scan-assembler vbic[ \t]+[dD][0-9]+,
[dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbics8.c scan-assembler vbic[ \t]+[dD][0-9]+, [dD][0-9]+,
[dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbicu16.c scan-assembler vbic[ \t]+[dD][0-9]+,
[dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbicu32.c scan-assembler vbic[ \t]+[dD][0-9]+,
[dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vbicu8.c scan-assembler vbic[ \t]+[dD][0-9]+, [dD][0-9]+,
[dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vornQs16.c scan-assembler vorn[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vornQs32.c scan-assembler vorn[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vornQs64.c scan-assembler vorn[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vornQs8.c scan-assembler vorn[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vornQu16.c scan-assembler vorn[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vornQu32.c scan-assembler vorn[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vornQu64.c scan-assembler vorn[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vornQu8.c scan-assembler vorn[ \t]+[qQ][0-9]+,
[qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vorns16.c scan-assembler vorn[ \t]+[dD][0-9]+,
[dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vorns32.c scan-assembler vorn[ \t]+[dD][0-9]+,
[dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vorns8.c scan-assembler vorn[ \t]+[dD][0-9]+, [dD][0-9]+,
[dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vornu16.c scan-assembler vorn[ \t]+[dD][0-9]+,
[dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vornu32.c scan-assembler vorn[ \t]+[dD][0-9]+,
[dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
  gcc.target/arm/neon/vornu8.c scan-assembler vorn[ \t]+[dD][0-9]+, [dD][0-9]+,
[dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n

with many --with-target/--with-cpu/--with-fpu configurations as can be seen on
http://cbuild.validation.linaro.org/build/cross-validation/gcc/210216/report-build-info.html


[Bug rtl-optimization/61094] [4.9/4.10 Regression] -O3 insn Internal compiler error in copyprop_hardreg_forward_1, at regcprop.c:775

2014-05-12 Thread law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61094

Jeffrey A. Law law at redhat dot com changed:

   What|Removed |Added

 CC||law at redhat dot com
   Assignee|unassigned at gcc dot gnu.org  |law at redhat dot com

--- Comment #8 from Jeffrey A. Law law at redhat dot com ---
Mine :-)


[Bug c/39438] Can't compile a wrapper around strftime with -Werror=format-nonliteral

2014-05-12 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39438

Manuel López-Ibáñez manu at gcc dot gnu.org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu.org

--- Comment #5 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
Could you produce a complete testcase that (In reply to D. Hugh Redelmeier from
comment #4)
 I have this problem too.  I'm writing a wrapper for strftime.  I get a
 warning on the actual strftime call.  
 
 warning: format not a string literal, format string not checked
 [-Wformat-nonliteral]
   strftime(buf, buflen, fmt, t);
 
 Surely GCC should not that for fmt argument has been checked to be a valid
 strftime format at the points where prettynow gets called.  So there is no
 need to whine that it is unchecked.
 

You should be able to produce a minimal self-contained testcase (the one you
posted doesn't compile). See http://gcc.gnu.org/bugs/minimize.html
The best would be to include only the definitions of the types that you need
and declare as 'extern' library functions that you use to avoid including
headers.

If you can produce another similar example that works with printf, that would
also help.

The second step would be to find out why it works with printf and not with
strftime, but that would require debugging GCC while compiling your (new)
testcases, so saving the first step will make it more likely that someone will
do the second.

[Bug other/61146] wide-int error when building GCC with clang

2014-05-12 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61146

Manuel López-Ibáñez manu at gcc dot gnu.org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu.org

--- Comment #4 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
(In reply to Oleg Endo from comment #0)
 The *FLAGS_FOR_TARGET are required or else they will be set to *FLAGS, which
 will pass -fheinous-gnu-extensions to the SH xgcc when building libgcc etc.
 (PR 25672)

It is funny that Clang has a flag called heinous-gnu-extensions. I wonder
what other things are enabled by that (what they think are heinous GNU
extensions and why).

[Bug c/61144] Invalid optimizations for extern vars with local weak definitions

2014-05-12 Thread bugdal at aerifal dot cx
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61144

--- Comment #8 from Rich Felker bugdal at aerifal dot cx ---
Further investigation suggests that the real gcc 4.8.2 is not affected; I was
mislead by the fact that Debian is shipping as gcc-4.8_4.8.2-21 an svn
snapshot that's actually post-4.8.2. So 4.9.0 seems to be the only official
release that's affected.


[Bug middle-end/61154] New: [ARM] wide-int merge introduced regressions in vshuf tests

2014-05-12 Thread christophe.lyon at st dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154

Bug ID: 61154
   Summary: [ARM] wide-int merge introduced regressions in vshuf
tests
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: christophe.lyon at st dot com

Commit 210113 (Merge in wide-int) made several tests (mostly vshuf) to fail
on hf ARM targets (both little and big endian).

For instance, with GCC configured as:
--target=arm-none-linux-gnueabihf
--with-mode=arm
--with-cpu=cortex-a9
--with-fpu=neon-fp16

I can see:
Passed now fails  [PASS = FAIL]:
  c-c++-common/torture/vshuf-v16hi.c  -O1  (test for excess errors)
  c-c++-common/torture/vshuf-v16hi.c  -O2  (test for excess errors)
  c-c++-common/torture/vshuf-v16hi.c  -O2 -flto -fno-use-linker-plugin
-flto-partition=none  (test for excess errors)
  c-c++-common/torture/vshuf-v16hi.c  -O3 -fomit-frame-pointer  (test for
excess errors)
  c-c++-common/torture/vshuf-v16hi.c  -O3 -g  (test for excess errors)
  c-c++-common/torture/vshuf-v16hi.c  -Os  (test for excess errors)
  gcc.dg/torture/vshuf-v16hi.c  -O2  (test for excess errors)
  gcc.dg/torture/vshuf-v32qi.c  -O2  (test for excess errors)
  gcc.dg/tree-ssa/ssa-fre-31.c (test for excess errors)
Pass disappears   [PASS = ]:
  gcc.dg/torture/vshuf-v16hi.c  -O2  execution test
  gcc.dg/torture/vshuf-v32qi.c  -O2  execution test
  gcc.dg/tree-ssa/pr45427.c scan-tree-dump-times cunrolli bounded by 0 0
Fail appears  [ = FAIL]:
  c-c++-common/torture/vshuf-v16hi.c  -O1  (internal compiler error)
  c-c++-common/torture/vshuf-v16hi.c  -O2  (internal compiler error)
  c-c++-common/torture/vshuf-v16hi.c  -O2 -flto -fno-use-linker-plugin
-flto-partition=none  (internal compiler error)
  c-c++-common/torture/vshuf-v16hi.c  -O3 -fomit-frame-pointer  (internal
compiler error)
  c-c++-common/torture/vshuf-v16hi.c  -O3 -g  (internal compiler error)
  c-c++-common/torture/vshuf-v16hi.c  -Os  (internal compiler error)
  gcc.dg/torture/vshuf-v16hi.c  -O2  (internal compiler error)
  gcc.dg/torture/vshuf-v32qi.c  -O2  (internal compiler error)
  gcc.dg/tree-ssa/ssa-fre-31.c (internal compiler error)


[Bug target/61153] [ARM] vbic vorn tests fail

2014-05-12 Thread ktkachov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61153

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 CC||ktkachov at gcc dot gnu.org

--- Comment #1 from ktkachov at gcc dot gnu.org ---
These are caused by r210216 when those intrinsics were reimplemented in C
rather than using builtins. The only reason they fail is because the tests are
compiled with -O0 which prevents combine from matching the corresponding
patterns.
If compiled with optimisation the tests all work.
I believe the plan is to remove these tests sometime soon anyway.

See http://gcc.gnu.org/ml/gcc-patches/2014-04/msg01836.html for more.


[Bug target/61153] [ARM] vbic vorn tests fail

2014-05-12 Thread christophe.lyon at st dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61153

--- Comment #2 from christophe.lyon at st dot com ---
OK, but my tests currently don't inspect the generated code.

They are execution tests, which means the could be PASS using only core
instructions, and no Neon one.

So maybe we should add some optimization level to the existing tests in the
meantime?


[Bug target/61153] [ARM] vbic vorn tests fail

2014-05-12 Thread ktkachov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61153

--- Comment #3 from ktkachov at gcc dot gnu.org ---
 So maybe we should add some optimization level to the existing tests in the
 meantime?

Transforming them into something like

#include arm_neon.h

volatile int16x8_t arg0_int16x8_t;
volatile int16x8_t arg1_int16x8_t;

int16x8_t test_vbicQs16 (void)
{
  int16x8_t out_int16x8_t;

  return vbicq_s16 (arg0_int16x8_t, arg1_int16x8_t);
}

seems to work at -O2 (i.e. generates vbic and doesn't optimise away the whole
test), so it could be a way to go if the maintainers want it.

To be a bit pedantic, the ACLE spec doesn't strictly require the intrinsics
that the particular NEON instruction is generated, just that the functionality
is as defined in the spec (although the NEON instruction is likely to be the
optimal implementation of that functionality).

Do we plan to keep these scan-assembler tests? or go with just functional
tests?


[Bug target/61153] [ARM] vbic vorn tests fail

2014-05-12 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61153

Ramana Radhakrishnan ramana at gcc dot gnu.org changed:

   What|Removed |Added

 CC||ramana at gcc dot gnu.org

--- Comment #4 from Ramana Radhakrishnan ramana at gcc dot gnu.org ---
 Since commit 210216 Neon intrinsics TLC - Replace intrinsics with GNU C
 implementations, I have noticed regressions in the following tests:
   gcc.target/arm/neon/vbicQs16.c scan-assembler vbic[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbicQs32.c scan-assembler vbic[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbicQs64.c scan-assembler vbic[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbicQs8.c scan-assembler vbic[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbicQu16.c scan-assembler vbic[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbicQu32.c scan-assembler vbic[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbicQu64.c scan-assembler vbic[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbicQu8.c scan-assembler vbic[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbics16.c scan-assembler vbic[ \t]+[dD][0-9]+,
 [dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbics32.c scan-assembler vbic[ \t]+[dD][0-9]+,
 [dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbics8.c scan-assembler vbic[ \t]+[dD][0-9]+,
 [dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbicu16.c scan-assembler vbic[ \t]+[dD][0-9]+,
 [dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbicu32.c scan-assembler vbic[ \t]+[dD][0-9]+,
 [dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vbicu8.c scan-assembler vbic[ \t]+[dD][0-9]+,
 [dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vornQs16.c scan-assembler vorn[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vornQs32.c scan-assembler vorn[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vornQs64.c scan-assembler vorn[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vornQs8.c scan-assembler vorn[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vornQu16.c scan-assembler vorn[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vornQu32.c scan-assembler vorn[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vornQu64.c scan-assembler vorn[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vornQu8.c scan-assembler vorn[ \t]+[qQ][0-9]+,
 [qQ][0-9]+, [qQ][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vorns16.c scan-assembler vorn[ \t]+[dD][0-9]+,
 [dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vorns32.c scan-assembler vorn[ \t]+[dD][0-9]+,
 [dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vorns8.c scan-assembler vorn[ \t]+[dD][0-9]+,
 [dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vornu16.c scan-assembler vorn[ \t]+[dD][0-9]+,
 [dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vornu32.c scan-assembler vorn[ \t]+[dD][0-9]+,
 [dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n
   gcc.target/arm/neon/vornu8.c scan-assembler vorn[ \t]+[dD][0-9]+,
 [dD][0-9]+, [dD][0-9]+!?([ \t]+@[a-zA-Z0-9 ]+)?\n


Yes that is expected as per my original patch submission. Patch 1/3 said these
tests would fail because at O0 combine doesn't run.

I'm expecting your run time tests to go in and for cases where we need them, we
may want to put out some kind of basic scan assembler tests for them.

I'm tempted to mark this as invalid.


 
 with many --with-target/--with-cpu/--with-fpu configurations as can be seen
 on
 http://cbuild.validation.linaro.org/build/cross-validation/gcc/210216/report-
 build-info.html


[Bug target/61153] [ARM] vbic vorn tests fail

2014-05-12 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61153

--- Comment #5 from Ramana Radhakrishnan ramana at gcc dot gnu.org ---

 Do we plan to keep these scan-assembler tests? or go with just functional
 tests?

No, not these scan assembler tests. They serve no purpose. 

I'm expecting them to get replaced by the testsuite you've been writing up and
would like them to include any kind of scan-assembler tests if possible.

Ramana


[Bug target/61153] [ARM] vbic vorn tests fail

2014-05-12 Thread christophe.lyon at st dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61153

--- Comment #6 from christophe.lyon at st dot com ---
(In reply to Ramana Radhakrishnan from comment #4)
 Yes that is expected as per my original patch submission. Patch 1/3 said
 these tests would fail because at O0 combine doesn't run.

Indeed, sorry I forgot about it.

 I'm expecting your run time tests to go in and for cases where we need them,
 we may want to put out some kind of basic scan assembler tests for them.
 
 I'm tempted to mark this as invalid.
 

How do we define cases where we need them? My concern is that some compiler
change might cause a suboptimal-yet-functional code to be generated, and we
wouldn't notice it.


[Bug target/61153] [ARM] vbic vorn tests fail

2014-05-12 Thread christophe.lyon at st dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61153

--- Comment #7 from christophe.lyon at st dot com ---
(In reply to Ramana Radhakrishnan from comment #5)
  Do we plan to keep these scan-assembler tests? or go with just functional
  tests?
 
 No, not these scan assembler tests. They serve no purpose. 
 
 I'm expecting them to get replaced by the testsuite you've been writing up
 and would like them to include any kind of scan-assembler tests if possible.
 

Good suggestion, I'll look at how easily I can add that.


[Bug target/61153] [ARM] vbic vorn tests fail

2014-05-12 Thread ramana.radhakrishnan at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61153

--- Comment #8 from ramana.radhakrishnan at arm dot com ramana.radhakrishnan 
at arm dot com ---

 How do we define cases where we need them? My concern is that some compiler
 change might cause a suboptimal-yet-functional code to be generated, and we
 wouldn't notice it.


Well, currently tests in gcc.target/arm/neon serve no functional / 
correctness purpose. The only thing they check is if the correct 
instruction is generated at O0 which is probably enough for that case.

I would rather that we put in scan-assembler tests in your testsuite 
rather than anything else.

regards
Ramana


[Bug c/61144] Invalid optimizations for extern vars with local weak definitions

2014-05-12 Thread jody at jodybruchon dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61144

--- Comment #9 from Jody Lee Bruchon jody at jodybruchon dot com ---
For my gcc versions (x86_64) compiled from release sources, I have the
following for this testcase, with and without static, using -O2:

=== gcc 4.8.2, with and without static ===

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/4.8.2/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4.8.2/configure --prefix=/usr --mandir=/usr/man
--libexecdir=/usr/lib --enable-languages=c,c++,objc --enable-threads=posix
--enable-__cxa_atexit --enable-clocale=gnu --enable-shared --disable-nls
--with-x=no --with-system-zlib --disable-multilib --disable-bootstrap
--disable-debug
Thread model: posix
gcc version 4.8.2 (GCC)

$ objdump -dr test.o

test.o: file format elf64-x86-64


Disassembly of section .text:

 bar:
   0:   8b 15 00 00 00 00   mov0x0(%rip),%edx# 6 bar+0x6
2: R_X86_64_PC32foo-0x4
   6:   31 c0   xor%eax,%eax
   8:   85 d2   test   %edx,%edx
   a:   0f 95 c0setne  %al
   d:   c3  retq

=== gcc 4.9.0 ===

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4.9.0/configure --prefix=/usr --mandir=/usr/man
--libexecdir=/usr/lib --enable-languages=c,c++,objc --enable-threads=posix
--enable-__cxa_atexit --enable-clocale=gnu --enable-shared --disable-nls
--with-x=no --with-system-zlib --disable-multilib --disable-debug
Thread model: posix
gcc version 4.9.0 (GCC)

=== With static (4.9.0) ===

$ objdump -dr test.o

test.o: file format elf64-x86-64


Disassembly of section .text:

 bar:
   0:   31 c0   xor%eax,%eax
   2:   c3  retq

=== Without static (4.9.0) ===

$ objdump -dr test.o

test.o: file format elf64-x86-64


Disassembly of section .text:

 bar:
   0:   8b 15 00 00 00 00   mov0x0(%rip),%edx# 6 bar+0x6
2: R_X86_64_PC32foo-0x4
   6:   31 c0   xor%eax,%eax
   8:   85 d2   test   %edx,%edx
   a:   0f 95 c0setne  %al
   d:   c3  retq


[Bug target/60300] [avr] Suboptimal stack pointer manipulation for frame setup

2014-05-12 Thread senthil_kumar.selvaraj at atmel dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60300

Senthil Kumar Selvaraj senthil_kumar.selvaraj at atmel dot com changed:

   What|Removed |Added

 CC||senthil_kumar.selvaraj@atme
   ||l.com

--- Comment #4 from Senthil Kumar Selvaraj senthil_kumar.selvaraj at atmel dot 
com ---
It doesn't actually get to that - avr_sp_immediate_operand returns false if the
operand is not IN_RANGE(-6,6). The comments are a bit misleading though - the
shortest sequence only applies if the addend is within that range.

Like Johann said, it must be a deliberate decision in favor of speed - the
attached program with a stub implementation of bar and main calling foo clocks
a couple of cycles lesser with DSIZE=7 than with DSIZE=6(as measured with
avrtest), although the code is 6 bytes longer. If RCALLs and PUSH had been
generated, the code would be 4 bytes shorter, but would need 4 more clock
cycles.


[Bug middle-end/61155] New: vshuf-v16hi failures for arm-none-linux-gnueabihf since the wide-int merge.

2014-05-12 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61155

Bug ID: 61155
   Summary: vshuf-v16hi failures for arm-none-linux-gnueabihf
since the wide-int merge.
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ramana at gcc dot gnu.org

I've recently started seeing these testfailures on arm-none-linux-gnueabihf.
Appears to be from the wide-int merge.

$TOPDIR/configure --target=arm-none-linux-gnueabihf --with-cpu=cortex-a15
--with-fpu=neon --with-float=hard


FAIL: c-c++-common/torture/vshuf-v16hi.c  -O1  (internal compiler error)
FAIL: c-c++-common/torture/vshuf-v16hi.c  -O1  (test for excess errors)
FAIL: c-c++-common/torture/vshuf-v16hi.c  -O2  (internal compiler error)
FAIL: c-c++-common/torture/vshuf-v16hi.c  -O2  (test for excess errors)
FAIL: c-c++-common/torture/vshuf-v16hi.c  -O3 -fomit-frame-pointer  (internal
compiler error)
FAIL: c-c++-common/torture/vshuf-v16hi.c  -O3 -fomit-frame-pointer  (test for
excess errors)
FAIL: c-c++-common/torture/vshuf-v16hi.c  -O3 -g  (internal compiler error)
FAIL: c-c++-common/torture/vshuf-v16hi.c  -O3 -g  (test for excess errors)
FAIL: c-c++-common/torture/vshuf-v16hi.c  -Os  (internal compiler error)
FAIL: c-c++-common/torture/vshuf-v16hi.c  -Os  (test for excess errors)
FAIL: c-c++-common/torture/vshuf-v16hi.c  -O2 -flto -fno-use-linker-plugin
-flto-partition=none  (internal compiler error)
FAIL: c-c++-common/torture/vshuf-v16hi.c  -O2 -flto -fno-use-linker-plugin
-flto-partition=none  (test for excess errors)


./cc1plus -O2 -mcpu=cortex-a15 -mfpu=neon -mfloat-abi=hard vshuf-v16hi.ii


[Bug middle-end/61155] vshuf-v16hi failures for arm-none-linux-gnueabihf since the wide-int merge.

2014-05-12 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61155

--- Comment #1 from Ramana Radhakrishnan ramana at gcc dot gnu.org ---
These also look related to the same 

FAIL: gcc.dg/torture/vshuf-v32qi.c  -O2  (internal compiler error)
FAIL: gcc.dg/torture/vshuf-v32qi.c  -O2  (test for excess errors)


[Bug middle-end/61155] vshuf-v16hi failures for arm-none-linux-gnueabihf since the wide-int merge.

2014-05-12 Thread ktkachov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61155

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||ktkachov at gcc dot gnu.org
 Resolution|--- |DUPLICATE

--- Comment #2 from ktkachov at gcc dot gnu.org ---
Seems like a duplicate of PR 61154

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


[Bug target/61154] [ARM] wide-int merge introduced regressions in vshuf tests

2014-05-12 Thread ktkachov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 CC||ramana at gcc dot gnu.org

--- Comment #1 from ktkachov at gcc dot gnu.org ---
*** Bug 61155 has been marked as a duplicate of this bug. ***


[Bug target/61154] [ARM] wide-int merge introduced regressions in vshuf tests

2014-05-12 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154

Ramana Radhakrishnan ramana at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
 Target||arm-none-linux-gnueabihf
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-05-12
 Ever confirmed|0   |1

--- Comment #2 from Ramana Radhakrishnan ramana at gcc dot gnu.org ---
I see the same.


[Bug c++/60209] Declaration of user-defined literal operator cause error

2014-05-12 Thread emsr at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60209

--- Comment #3 from emsr at gcc dot gnu.org ---
Created attachment 32779
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32779action=edit
Just parse a whole string instread of consuming one token.

This builds and tests clean on x86_64-linux.

I would like to hold out for a slightly better design that could simplifiy code
a tiny bit and handle maybe these:

void operator   _x(unsigned long long); // This patch diagnoses this.

void operator  boo _y(unsigned long long); // I'd like to diagnose this.

void operator  u _u(unsigned long long); // I'd like to diagnose this.

void operator u  _v(unsigned long long); // Diagnosed correctly now.

void operator  _w(unsigned long long); // This might be harder/messier and
may be out of scope.


[Bug c++/60209] Declaration of user-defined literal operator cause error

2014-05-12 Thread emsr at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60209

emsr at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-05-12
   Assignee|unassigned at gcc dot gnu.org  |emsr at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #4 from emsr at gcc dot gnu.org ---
Created attachment 32780
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32780action=edit
attach patch for previous message...


[Bug c/61144] Invalid optimizations for extern vars with local weak definitions

2014-05-12 Thread cloos at jhcloos dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61144

--- Comment #10 from James Cloos cloos at jhcloos dot com ---
My tests on debian sid with GCC: (Debian 4.8.2-21) 4.8.2 do not replicate the
bug.

On debian sid, only 4.9 and gcc-snapshot (the 4.10 branch) show the bug.


[Bug lto/54108] 35% bigger binary

2014-05-12 Thread wbrana at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54108

wbrana wbrana at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

--- Comment #1 from wbrana wbrana at gmail dot com ---
Difference is about 3% in 4.8 and 4.9.


[Bug c++/61038] g++ -E is unusable with UDL strings

2014-05-12 Thread emsr at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61038

--- Comment #2 from emsr at gcc dot gnu.org ---
Created attachment 32781
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32781action=edit
g++ -E pr61038.C  pr61038_cxx98.ii

Get preprocessed output in C++98 mode.


[Bug c++/61038] g++ -E is unusable with UDL strings

2014-05-12 Thread emsr at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61038

--- Comment #3 from emsr at gcc dot gnu.org ---
Created attachment 32782
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32782action=edit
g++ -std=c++11 -E pr61038.C  pr61038_cxx11.ii

Get preprocessed output in C++11 mode.


[Bug fortran/61147] Incorrect behavior using function that returns deferred length character pointer

2014-05-12 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61147

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-05-12
 CC||janus at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Confirmed on 4.9.0 and trunk. The code works if I replace

  class (B), intent(in), target :: this

with

  type (B), intent(in), target :: this

however 

   print *, ', toPointer(obj), ' 

prints ''.


[Bug c++/6273] [DR 502] Dependency of nested enumerations and enumerators

2014-05-12 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=6273

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #18 from Jason Merrill jason at gcc dot gnu.org ---
(In reply to Paolo Carlini from comment #16)
 Jason, I'm having a look to this, and I'm not sure there is still something
 to do.

I agree.  The template op+ is found by argument-dependent lookup.


[Bug fortran/59537] No Automatic array cannot have an initializer, for -finit-real without a SAVE statement present in subroutine

2014-05-12 Thread bugs at stellardeath dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59537

--- Comment #6 from Lorenz Hüdepohl bugs at stellardeath dot org ---
 Nonetheless, code that compiles without -finit-real should also compile
 with -finit-real, right?

 I disagree: C506 states that automatic object cannot be initialized. What is 
 wrong is that it depends on the presence of the SAVE statement without a saved
 entity list.

Well, I guess it depends on what meaning one wants to assign to the flag
-finit-real, which is anyway not something the standard specifies, right?

Do you really want to restrict the usage of -finit-real to programs where every
last variable is initializable?

I always use -finit-real as a kind of debug feature, with -finit-real=snan, to
check for the use of uninitialized values. I did never expect that it should
have a well defined, standard-mandated effect.

[Bug fortran/61156] New: Internal compiler error for Fortran files when specifying a file instead of an include directory with -I

2014-05-12 Thread bugs at stellardeath dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61156

Bug ID: 61156
   Summary: Internal compiler error for Fortran files when
specifying a file instead of an include directory with
-I
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: trivial
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: bugs at stellardeath dot org

gfortran produces an internal compiler error when one mistakenly specifies a
file instead of a directory with -I:

# touch file.h
# touch src.F90
# gcc-4.9 -I./file.h src.F90
Warning: ./file.h is not a directory
f951: internal compiler error: Aborted
Please submit a full bug report,
with preprocessed source if appropriate.
See http://bugs.opensuse.org/ for instructions.
#

Happens both withe shipped gcc-4.8.1 from openSUSE 13.1 and
their gcc-4.9.0 from a development repository:

# gcc-4.9 --version
gcc-4.9 (SUSE Linux) 4.9.0
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

I could also trigger this with versions 4.8.1, 4.7.3, and 4.6.4, - but not with
4.3.4 :)


[Bug c++/61038] g++ -E is unusable with UDL strings

2014-05-12 Thread emsr at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61038

emsr at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-05-12
   Assignee|unassigned at gcc dot gnu.org  |emsr at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #4 from emsr at gcc dot gnu.org ---
Created attachment 32783
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32783action=edit
In libcpp, is stringify_arg, test for user-defined literal strings.

libcpp/

2014-05-12  Edward Smith-Rowland  3dw...@verizon.net

PR c++/61038
* module.c (stringify_arg (cpp_reader *, macro_arg *)):
Check for user-defined literal strings to escape quotes.

I need testcases.

Also, it just occurred to me that I should test for user-defined *chars* too.

After work...


[Bug c/39438] Can't compile a wrapper around strftime with -Werror=format-nonliteral

2014-05-12 Thread hugh at mimosa dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39438

--- Comment #6 from D. Hugh Redelmeier hugh at mimosa dot com ---
Responding to Comment 5 by Manuel López-Ibáñez:

Thanks for looking at this.

 Could you produce a complete testcase
===
/* compile with -c -Wformat -Werror=format-nonliteral */
#include time.h

extern void prettynow(char *buf, size_t buflen, const char *fmt, struct tm *t)
__attribute__ ((format (__strftime__, 3, 0)));

void prettynow(char *buf, size_t buflen, const char *fmt, struct tm *t)
{
strftime(buf, buflen, fmt, t);
}
===

 The best would be to include only the definitions of the types that you need 
  and declare as 'extern' library functions that you use to avoid including 
 headers.

I didn't do this part.  My excuses: the type declarations are not portable but
the example should be; the solution might be in fixing headers; this way is
shorter too.

 If you can produce another similar example that works with printf, that would 
 also help.

I don't think that printf is similar enough.  A strftime format doesn't
interact with varargs in a complex and problematic way.  A string, on its own,
is or is not a valid strftime format; a string is only a valid printf format
when considered with the argument list.

If an arg is marked as a const char * (i.e. unchanging) and has the strftime
format attribute, it should be accepted as if it were a literal strftime
argument.  After all, the necessary checking would have been done at this
routine's points of call.

[Bug c/61144] Invalid optimizations for extern vars with local weak definitions

2014-05-12 Thread bugdal at aerifal dot cx
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61144

--- Comment #11 from Rich Felker bugdal at aerifal dot cx ---
Adding __attribute__((__used__)) to the static object suppresses the symptom in
case that helps to isolate what's causing it.


[Bug target/60991] [avr] Stack corruption when using 24-bit integers __int24 or __memx pointers in large stack frame

2014-05-12 Thread denisc at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60991

--- Comment #4 from denisc at gcc dot gnu.org ---
Author: denisc
Date: Mon May 12 15:33:00 2014
New Revision: 210325

URL: http://gcc.gnu.org/viewcvs?rev=210325root=gccview=rev
Log:
gcc/ChangeLog

PR target/60991
* config/avr/avr.c (avr_out_store_psi): Use correct constant
to restore Y.

gcc/testsuite/ChangeLog

PR target/60991
* gcc.target/avr/pr60991.c: New testcase.


Added:
trunk/gcc/testsuite/gcc.target/avr/pr60991.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/avr/avr.c
trunk/gcc/testsuite/ChangeLog


[Bug c/39438] Can't compile a wrapper around strftime with -Werror=format-nonliteral

2014-05-12 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39438

--- Comment #7 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
(In reply to D. Hugh Redelmeier from comment #6)
  The best would be to include only the definitions of the types that you 
  need  and declare as 'extern' library functions that you use to avoid 
  including headers.
 
 I didn't do this part.  My excuses: the type declarations are not portable
 but the example should be; the solution might be in fixing headers; this way
 is shorter too.

If you compile with --save-temps (as the instruction say), you will see what
GCC parses. All that code makes debugging more complex. So if someone had to
debug this, he would have to cut down that code to a few lines. This is one
reason why examples should be minimal.

[Bug target/60300] [avr] Suboptimal stack pointer manipulation for frame setup

2014-05-12 Thread matthijs at stdin dot nl
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60300

--- Comment #5 from Matthijs Kooijman matthijs at stdin dot nl ---
Ah, then the comments are a bit misleading, yes. Wouldn't it make sense to put
this decision outside of avr_sp_immediate_operand, in the same area where the
decision between the two options is made? Might lead to a bit of duplication,
though, it seems the function is callled twice.

In any case, from a user perspective, it surprises me that this exception is
made, even when compiling with -Os. Wouldn't it make sense to ignore the range
check with -Os? Or is -Os really only used to determine the list of
optimizations to (not) run and not supposed to influence the behaviour of the
compiler otherwise?


[Bug c/39438] Can't compile a wrapper around strftime with -Werror=format-nonliteral

2014-05-12 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39438

--- Comment #8 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
(In reply to D. Hugh Redelmeier from comment #6)
  If you can produce another similar example that works with printf, that 
  would also help.
 
 I don't think that printf is similar enough.  A strftime format doesn't
 interact with varargs in a complex and problematic way.  A string, on its
 own, is or is not a valid strftime format; a string is only a valid printf
 format when considered with the argument list.
 
 If an arg is marked as a const char * (i.e. unchanging) and has the strftime
 format attribute, it should be accepted as if it were a literal strftime
 argument.  After all, the necessary checking would have been done at this
 routine's points of call.

Assuming that the wrapper is marked with the correct attribute, GCC would need
to know that this const char* comes from the correct wrapper's argument. I am
not sure this is trivial to know at the point of warning without additional
work/info in the front-end. Some comments above have suggested that this
work/info is done for printf, so the first thing someone looking at this should
do is to understand how printf detects this case, and why the same is not done
for strftime, and then try to share as much code between the two cases as
possible. Perhaps it is a bug, perhaps it was never implemented for strftime.
In any case, one would need to debug GCC using two similar and minimal
testcases to understand what is going on.

See http://gcc.gnu.org/wiki/DebuggingGCC if you want to see how this works. As
an exercise, try to find the point of warning while debugging using your
testcase.

Bugs/features are more likely to be fixed if:

1. There is a minimal testcase that reproduces the problem
2. Someone has debugged GCC and identified the problem
3. Someone has done all the legal prerequisites and posted a patch that fixes
the problem
4. Someone has tested and submitted the patch for review
5. Someone has taken care of the review comments and committed the patch

We are not even in 1 and the real work is 2 and 3.

[Bug target/60991] [avr] Stack corruption when using 24-bit integers __int24 or __memx pointers in large stack frame

2014-05-12 Thread denisc at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60991

--- Comment #5 from denisc at gcc dot gnu.org ---
Author: denisc
Date: Mon May 12 15:57:52 2014
New Revision: 210327

URL: http://gcc.gnu.org/viewcvs?rev=210327root=gccview=rev
Log:
Backport from mainline
2014-05-12  Senthil Kumar Selvaraj  senthil_kumar.selva...@atmel.com

PR target/60991
* config/avr/avr.c (avr_out_store_psi): Use correct constant
to restore Y.

Backport from mainline
2014-05-12  Senthil Kumar Selvaraj  senthil_kumar.selva...@atmel.com

PR target/60991
* gcc.target/avr/pr60991.c: New testcase.



Added:
branches/gcc-4_9-branch/gcc/testsuite/gcc.target/avr/pr60991.c
Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/config/avr/avr.c
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog


[Bug target/61154] [ARM] wide-int merge introduced regressions in vshuf tests

2014-05-12 Thread rsandifo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154

--- Comment #3 from rsandifo at gcc dot gnu.org rsandifo at gcc dot gnu.org 
---
This code is doing an OImode ASHIFT and fails the check:

#if TARGET_SUPPORTS_WIDE_INT == 0
  /* This assert keeps the simplification from producing a result
 that cannot be represented in a CONST_DOUBLE but a lot of
 upstream callers expect that this function never fails to
 simplify something and so you if you added this to the test
 above the code would die later anyway.  If this assert
 happens, you just need to make the port support wide int.  */
  gcc_assert (width = HOST_BITS_PER_DOUBLE_INT);
#endif

since without CONST_WIDE_INT we won't be able to represent all
results correctly.

Unfortunately porting to CONST_WIDE_INT is something that needs
knowledge of the target-specific code, but it shouldn't be much work.
It's just a case of auditing each use of const_double in config/arm
to see whether it is handling integer const_doubles or floating-point
const_doubles.  Since ARM is a 32-bit target and since HWI and CONST_INT
are 64 bits, I assume most places really are handling floating-point values.
(A grep makes that obvious for some things, but arm_immediate_di_operand
does accept const_double.  I'm not sure whether that's just a left-over
from pre need_64bit_hwint days though.)

Adding:

#define TARGET_SUPPORTS_WIDE_INT 1

does fix the ICE but it'd be good audit the use of const_doubles too.


[Bug target/60991] [avr] Stack corruption when using 24-bit integers __int24 or __memx pointers in large stack frame

2014-05-12 Thread denisc at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60991

--- Comment #6 from denisc at gcc dot gnu.org ---
Author: denisc
Date: Mon May 12 16:07:44 2014
New Revision: 210328

URL: http://gcc.gnu.org/viewcvs?rev=210328root=gccview=rev
Log:
Backport from mainline
2014-05-12  Senthil Kumar Selvaraj  senthil_kumar.selva...@atmel.com

PR target/60991
* config/avr/avr.c (avr_out_store_psi): Use correct constant
to restore Y.


Backport from mainline
2014-05-12  Senthil Kumar Selvaraj  senthil_kumar.selva...@atmel.com

PR target/60991
* gcc.target/avr/pr60991.c: New testcase.


Added:
branches/gcc-4_8-branch/gcc/testsuite/gcc.target/avr/pr60991.c
Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/config/avr/avr.c
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog


[Bug fortran/60834] [OOP] ICE with ASSOCIATE construct (gimplify_var_or_parm_decl, at gimplify.c:1721)

2014-05-12 Thread tkoenig at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60834

--- Comment #3 from Thomas Koenig tkoenig at gcc dot gnu.org ---
Author: tkoenig
Date: Mon May 12 16:17:09 2014
New Revision: 210329

URL: http://gcc.gnu.org/viewcvs?rev=210329root=gccview=rev
Log:
2014-05-12  Thomas Koenig  tkoe...@gcc.gnu.org

PR fortran/60834
* frontend-passes.c (in_assoc_list):  New variable.
(optimize_namespace):  Initialize in_assoc_list
(combine_array_constructor): Don't try to combine
assoc lists.
(gfc_code_walker):  Keep track of in_assoc_list.

2014-05-12  Thomas Koenig  tkoe...@gcc.gnu.org

PR fortran/60834
* gfortran.dg/associate_16.f90:  New test.


Added:
trunk/gcc/testsuite/gfortran.dg/associate_16.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/frontend-passes.c
trunk/gcc/testsuite/ChangeLog


[Bug fortran/61126] gfortran does not enable -Wununused-parameter with -Wextra

2014-05-12 Thread doko at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61126

--- Comment #17 from Matthias Klose doko at gcc dot gnu.org ---
patch posted at
http://gcc.gnu.org/ml/gcc-patches/2014-05/msg00785.html


[Bug target/61131] [4.8 regression] ARM -Os: incorrect code generation

2014-05-12 Thread mikpelinux at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61131

--- Comment #5 from Mikael Pettersson mikpelinux at gmail dot com ---
(In reply to Stephen Warren from comment #3)
 Or is the definition of
 undefined such that it propagates through the entire expression irrespective
 of the expression's logic?

It is.  Once execution hits undefined behaviour all bets are off.

Undefined is not some unspecified value you can choose to ignore.


[Bug c/61144] Invalid optimizations for extern vars with local weak definitions

2014-05-12 Thread bugdal at aerifal dot cx
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61144

--- Comment #12 from Rich Felker bugdal at aerifal dot cx ---
Furthermore, __builtin_constant_p(dummy) wrongly returns 1, even though dummy
is modifiable externally via foo (assuming foo is not replaced by a strong
definition elsewhere). Perhaps this should be filed as a separate bug since
it's also user-visible, but I think the cause is the same.

On the other hand, according to my tests on gcc.godbolt.org, the incorrect
value for __builtin_constant_p predates the optimization bug. This could mean
they're separate bugs, but I suspect the later changes that cause the
optimization bug were correct except that they're using the wrong concept of
is this expression constant? from the earlier bug.


[Bug target/61157] New: [SH] Implement TARGET_ATOMIC_ASSIGN_EXPAND_FENV

2014-05-12 Thread olegendo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61157

Bug ID: 61157
   Summary: [SH] Implement TARGET_ATOMIC_ASSIGN_EXPAND_FENV
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: olegendo at gcc dot gnu.org
Target: sh*-*-*

http://gcc.gnu.org/ml/gcc/2013-11/msg00131.html


[Bug c++/61038] g++ -E is unusable with UDL strings

2014-05-12 Thread 3dw4rd at verizon dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61038

--- Comment #5 from Ed Smith-Rowland 3dw4rd at verizon dot net ---
I'm pretty sure I have my arms around this one.
Two questions:
1. Any ideas on how to make testsuite cases?  Any examples of looking at
preprocessed files in the testsuite?

2. Assuming this gets into mainline, how far can we backport?


[Bug c/61158] New: negative shift at fold-const.c:12095

2014-05-12 Thread zeccav at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61158

Bug ID: 61158
   Summary: negative shift at fold-const.c:12095
   Product: gcc
   Version: 4.9.1
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: zeccav at gmail dot com

Compilation of the following forces a negative shift, result undefined in my
opinion 
/* gcc -S negative shift at fold-const.c:12095
 * x86_64
 * zerobits = prec - shiftc;
 * because prec - shiftc = -8
 * result is undefined 
 * compiling Linux Fedora 20 source code kernel/trace/blktrace.c
 * checked with gcc_assert(prec = shiftc  prec-shiftc 
HOST_BITS_PER_WIDE_INT); immediately before
*/
typedef unsigned long long __u64;
void blk_add_trace_unplug(unsigned int depth)
{
((__u64)(depth)  (__u64)0x00ffULL)  40;
}


[Bug ipa/61159] New: __builtin_constant_p gives incorrect results with aliases

2014-05-12 Thread bugdal at aerifal dot cx
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61159

Bug ID: 61159
   Summary: __builtin_constant_p gives incorrect results with
aliases
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ipa
  Assignee: unassigned at gcc dot gnu.org
  Reporter: bugdal at aerifal dot cx

This issue is closely related to #61144, but seems to have appeared earlier.
Consider the following test case:

static int dummy = 0;
extern int foo __attribute__((__weak__, __alias__(dummy)));
typedef char check[2*!__builtin_constant_p(dummy)-1];
typedef char check[2*!__builtin_constant_p(foo)-1];

While the static dummy could be considered constant if its address did not leak
outside the translation unit, its address DOES leak via the weak alias foo. As
long as there is no strong definition for foo in another translation unit,
dummy may be externally modified via the alias foo. As for foo, it is external
and thus may never be considered constant. Thus, __builtin_constant_p(dummy)
and __builtin_constant_p(foo) should both yield zero and the above translation
unit should compile successfully.

The results observed vary highly with gcc version. A number of versions were
observed giving __builtin_constant_p(dummy)==1, including 4.8.1, but
__builtin_constant_p(foo) was more rare, showing up only in 4.9.0 and some
really old versions like 4.4.7 (tested via gcc.godbolt.org since I don't have
that many gcc versions lying around to test locally).


[Bug target/60588] AVR target does not support init_priority attribute

2014-05-12 Thread charles at cnlohr dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60588

Charles Lohr charles at cnlohr dot com changed:

   What|Removed |Added

 CC||charles at cnlohr dot com

--- Comment #1 from Charles Lohr charles at cnlohr dot com ---
I am frustrated by this as well, and was hoping that since both AVRs and ARMs
are bare metal systems, it could be done in a similar way.  With ARMs, the
constructors are placed into a list that can be manually executed after main()
starts.

I.e. 

constructor_t *fn = _init_array_start;
while(fn  _init_array_end)
{
(*fn++)();
}


[Bug c++/61038] g++ -E is unusable with UDL strings

2014-05-12 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61038

--- Comment #6 from Paolo Carlini paolo.carlini at oracle dot com ---
Please send your patches, questions, etc, about this and the other bug to the
mailing list, with Jason in CC, otherwise we seriously risk unnecessarily
delaying the resolution of the issues.


[Bug fortran/60127] ICE with OpenMP and DO CONCURRENT

2014-05-12 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60127

--- Comment #4 from Tobias Burnus burnus at gcc dot gnu.org ---
Author: burnus
Date: Mon May 12 19:00:08 2014
New Revision: 210331

URL: http://gcc.gnu.org/viewcvs?rev=210331root=gccview=rev
Log:
2014-05-12  Tobias Burnus  bur...@net-b.de

PR fortran/60127
* openmp.c (resolve_omp_do): Reject do concurrent loops.

2014-05-12  Tobias Burnus  bur...@net-b.de

PR fortran/60127
* gfortran.dg/gomp/omp_do_concurrent.f90: New.


Added:
trunk/gcc/testsuite/gfortran.dg/gomp/omp_do_concurrent.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/openmp.c
trunk/gcc/testsuite/ChangeLog


[Bug c/61144] Invalid optimizations for extern vars with local weak definitions

2014-05-12 Thread bugdal at aerifal dot cx
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61144

--- Comment #13 from Rich Felker bugdal at aerifal dot cx ---
I've added the related issue 61159.


[Bug fortran/60127] ICE with OpenMP and DO CONCURRENT

2014-05-12 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60127

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #5 from Tobias Burnus burnus at gcc dot gnu.org ---
FIXED on the 4.10 trunk.


[Bug libfortran/61035] Crash in getcwd intrinsic due to stack overflow

2014-05-12 Thread jb at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61035

--- Comment #3 from Janne Blomqvist jb at gcc dot gnu.org ---
Author: jb
Date: Mon May 12 19:23:11 2014
New Revision: 210335

URL: http://gcc.gnu.org/viewcvs?rev=210335root=gccview=rev
Log:
Fix stack overflow crash in getcwd intrinsic.

2014-05-12  Janne Blomqvist  j...@gcc.gnu.org

PR libfortran/61035
* intrinsics/getcwd.c (getcwd_i4_sub): Avoid potentially large
stack allocation, avoid extra copying in the common case.

Modified:
trunk/libgfortran/ChangeLog
trunk/libgfortran/intrinsics/getcwd.c


[Bug c/39438] Can't compile a wrapper around strftime with -Werror=format-nonliteral

2014-05-12 Thread hugh at mimosa dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39438

--- Comment #9 from D. Hugh Redelmeier hugh at mimosa dot com ---
Created attachment 32784
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32784action=edit
minimal C source code that demonstrates the problem

minimal C source code that demonstrates the problem.
Notice that the (system-provided) declaration annotates the format argument
dirrectly with __format.  I haven't found documentation for that.


[Bug ipa/61159] __builtin_constant_p gives incorrect results with aliases

2014-05-12 Thread bugdal at aerifal dot cx
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61159

--- Comment #1 from Rich Felker bugdal at aerifal dot cx ---
I should amend this report with further info: __builtin_constant_p is giving
different results for dummy and foo depending on whether it's used at file
scope or in a function. I've also observed some other really weird behavior
from it that I need to summarize and report.


[Bug ipa/61160] New: [4.9/4.10 Regression] wrong code with -O3 (or ICE: verify_cgraph_node failed: edge points to wrong declaration)

2014-05-12 Thread zsojka at seznam dot cz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61160

Bug ID: 61160
   Summary: [4.9/4.10 Regression] wrong code with -O3 (or ICE:
verify_cgraph_node failed: edge points to wrong
declaration)
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ipa
  Assignee: unassigned at gcc dot gnu.org
  Reporter: zsojka at seznam dot cz

Created attachment 32785
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32785action=edit
reduced testcase (from g++.old-deja/g++.jason/thunk1.C)

Output:
$ g++ -O3 testcase.C
$ valgrind ./a.out
==21283== Invalid read of size 8
==21283==at 0x400740: CExample::MixinFunc(int, A) [clone .constprop.0]
(testcase.C:3)
==21283==by 0x40062A: main (testcase.C:27)
==21283==  Address 0x1 is not stack'd, malloc'd or (recently) free'd

Tested revisions:
r210308 - fail
4.9 r210307 - fail
4.8 r210303 - OK


[Bug ipa/61160] [4.9/4.10 Regression] wrong code with -O3 (or ICE: verify_cgraph_node failed: edge points to wrong declaration)

2014-05-12 Thread zsojka at seznam dot cz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61160

--- Comment #1 from Zdenek Sojka zsojka at seznam dot cz ---
Created attachment 32786
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=32786action=edit
testcase causing ICE

Slightly modified, struct A replaced by void *.

Compiler output:
$ g++ -O3 testcase.C
testcase.C:28:1: error: edge points to wrong declaration:
 }
 ^
 function_decl 0x7f09e2392600
_ZThn8_N8CExample9MixinFuncEiPv.artificial_thunk.1.artificial_thunk.3
type method_type 0x7f09e237c348
type pointer_type 0x7f09e22130a8 type void_type 0x7f09e2213000 void
public unsigned DI
size integer_cst 0x7f09e21edf78 constant 64
unit size integer_cst 0x7f09e21edf90 constant 8
align 64 symtab 0 alias set 3 canonical type 0x7f09e22130a8
pointer_to_this pointer_type 0x7f09e2219e70
QI
size integer_cst 0x7f09e220c078 constant 8
unit size integer_cst 0x7f09e220c090 constant 1
align 8 symtab 0 alias set -1 canonical type 0x7f09e237c348 method
basetype record_type 0x7f09e2374000 CExample
arg-types tree_list 0x7f09e2396708 value pointer_type 0x7f09e23742a0
chain tree_list 0x7f09e21fdbb8 value void_type 0x7f09e2213000
void
readonly addressable used decl_5 QI file testcase.C line 11 col 9 align 8
context record_type 0x7f09e2374000 CExample
arguments parm_decl 0x7f09e236d580 this
type pointer_type 0x7f09e2374348 type record_type 0x7f09e2374000
CExample
readonly unsigned DI size integer_cst 0x7f09e21edf78 64 unit size
integer_cst 0x7f09e21edf90 8
align 64 symtab 0 alias set -1 canonical type 0x7f09e2374348
readonly unsigned DI file testcase.C line 11 col 39 size integer_cst
0x7f09e21edf78 64 unit size integer_cst 0x7f09e21edf90 8
align 64 context function_decl 0x7f09e235ce00
_ZThn8_N8CExample9MixinFuncEiPv arg-type pointer_type 0x7f09e2374348
chain parm_decl 0x7f09e236d600 arg type integer_type 0x7f09e21ff690
int
used SI file testcase.C line 11 col 24
size integer_cst 0x7f09e220c1c8 constant 32
unit size integer_cst 0x7f09e220c1e0 constant 4
align 32 context function_decl 0x7f09e235ce00
_ZThn8_N8CExample9MixinFuncEiPv
arg-type integer_type 0x7f09e21ff690 int chain parm_decl
0x7f09e236d680 arg2
 Instead of: function_decl 0x7f09e235ce00 _ZThn8_N8CExample9MixinFuncEiPv
type method_type 0x7f09e23741f8
type pointer_type 0x7f09e22130a8 type void_type 0x7f09e2213000 void
public unsigned DI
size integer_cst 0x7f09e21edf78 constant 64
unit size integer_cst 0x7f09e21edf90 constant 8
align 64 symtab 0 alias set 3 canonical type 0x7f09e22130a8
pointer_to_this pointer_type 0x7f09e2219e70
QI
size integer_cst 0x7f09e220c078 constant 8
unit size integer_cst 0x7f09e220c090 constant 1
align 8 symtab 0 alias set -1 canonical type 0x7f09e23741f8 method
basetype record_type 0x7f09e2374000 CExample
arg-types tree_list 0x7f09e2356938 value pointer_type 0x7f09e23742a0
chain tree_list 0x7f09e2356618 value integer_type 0x7f09e21ff690
int
chain tree_list 0x7f09e2356640 value pointer_type
0x7f09e22130a8
chain tree_list 0x7f09e21fdbb8 value void_type
0x7f09e2213000 void
pointer_to_this pointer_type 0x7f09e2374888
readonly addressable asm_written used public weak virtual decl_5 QI file
testcase.C line 11 col 9 align 8 context record_type 0x7f09e2374000 CExample
arguments parm_decl 0x7f09e236d580 this
type pointer_type 0x7f09e2374348 type record_type 0x7f09e2374000
CExample
readonly unsigned DI size integer_cst 0x7f09e21edf78 64 unit size
integer_cst 0x7f09e21edf90 8
align 64 symtab 0 alias set -1 canonical type 0x7f09e2374348
readonly unsigned DI file testcase.C line 11 col 39 size integer_cst
0x7f09e21edf78 64 unit size integer_cst 0x7f09e21edf90 8
align 64 context function_decl 0x7f09e235ce00
_ZThn8_N8CExample9MixinFuncEiPv arg-type pointer_type 0x7f09e2374348
chain parm_decl 0x7f09e236d600 arg type integer_type 0x7f09e21ff690
int
used SI file testcase.C line 11 col 24
size integer_cst 0x7f09e220c1c8 constant 32
unit size integer_cst 0x7f09e220c1e0 constant 4
align 32 context function_decl 0x7f09e235ce00
_ZThn8_N8CExample9MixinFuncEiPv
arg-type integer_type 0x7f09e21ff690 int chain parm_decl
0x7f09e236d680 arg2
full-name virtual void* CExample::_ZThn8_N8CExample9MixinFuncEiPv(int,
void*)
   
main/14 (int main()) @0x7f09e237f7b0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  First run: 0
  Function flags: body only_called_at_startup
  Called by: 
  Calls:

[Bug c/61144] Invalid optimizations for extern vars with local weak definitions

2014-05-12 Thread glisse at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61144

--- Comment #14 from Marc Glisse glisse at gcc dot gnu.org ---
This seems related to PR 59948 where Honza says the code is really broken.


[Bug c++/61161] New: wrong two-stage name lookup for overloaded operators

2014-05-12 Thread richard-gccbugzilla at metafoo dot co.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61161

Bug ID: 61161
   Summary: wrong two-stage name lookup for overloaded operators
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: richard-gccbugzilla at metafoo dot co.uk

GCC rejects-valid on this:

struct T {
  templatetypename T void f(const T v) {
0  v;
  }
};

namespace N {
  struct X {};
  struct Y : X {};
  void operator(int, const X) {}
}

void operator(int, const N::Y) = delete;

int main() {
  N::Y d;
  T().f(d);
}

This is valid because the deleted operator is found by neither unqualified
lookup (within the template) or argument-dependent lookup (which searches
namespace N and not the global namespace).

This seems to be specific to operator syntax; if 'f' is changed to

  operator(0, v);

then the code is accepted.


[Bug c++/61038] g++ -E is unusable with UDL strings

2014-05-12 Thread 3dw4rd at verizon dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61038

--- Comment #7 from Ed Smith-Rowland 3dw4rd at verizon dot net ---
Note to self: you DO need to take care of char...

void
operator  _t(const char)
{
}

#define QUOTE(s) #s

int
main()
{
QUOTE(''_t);
QUOTE('\''_t);
QUOTE('\\'_t);
}


[Bug other/31778] genattrtab.c doesn't record filename

2014-05-12 Thread mrs at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=31778

--- Comment #4 from mrs at gcc dot gnu.org mrs at gcc dot gnu.org ---
Author: mrs
Date: Mon May 12 21:22:20 2014
New Revision: 210340

URL: http://gcc.gnu.org/viewcvs?rev=210340root=gccview=rev
Log:
PR other/31778
* genattrtab.c (filename): Add.
(convert_set_attr_alternative): Improve error message.
(check_defs): Restore read_md_filename for error messages.
(gen_insn): Save filename.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/genattrtab.c


[Bug other/31778] genattrtab.c doesn't record filename

2014-05-12 Thread mrs at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=31778

mrs at gcc dot gnu.org mrs at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #5 from mrs at gcc dot gnu.org mrs at gcc dot gnu.org ---
Fixed.


[Bug c++/61038] g++ -E is unusable with UDL strings

2014-05-12 Thread b.r.longbons at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61038

--- Comment #8 from Ben Longbons b.r.longbons at gmail dot com ---
(In reply to Ed Smith-Rowland from comment #7)
 Note to self: you DO need to take care of char...

What about multi-char constants, or are they not permitted in C++ UDLs?
Normally they get converted to int, so they're not *meaningful*, but ...

Also, remember the different prefixes: L for wchar_t, u8 for char-but-utf8, u
for char16_t, and U for char32_t

unsigned int fourcc = 'ABCD';


[Bug c++/61038] g++ -E is unusable with UDL strings

2014-05-12 Thread daniel.kruegler at googlemail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61038

--- Comment #9 from Daniel Krügler daniel.kruegler at googlemail dot com ---
(In reply to Ben Longbons from comment #8)
 What about multi-char constants, or are they not permitted in C++ UDLs?
 Normally they get converted to int, so they're not *meaningful*, but ...

There exists a core language issue for this:

http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1723

[Bug c++/61161] wrong two-stage name lookup for overloaded operators

2014-05-12 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61161

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
Maybe related to PR51577


[Bug c++/60373] half warning: visibility attribute ignored because it

2014-05-12 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60373

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-05-12
   Assignee|unassigned at gcc dot gnu.org  |paolo.carlini at oracle 
dot com
   Target Milestone|--- |4.10.0
 Ever confirmed|0   |1

--- Comment #1 from Paolo Carlini paolo.carlini at oracle dot com ---
Mine.


[Bug target/60735] GCC targeting E500 with SPE has errors with the _Decimal64 type

2014-05-12 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60735

--- Comment #15 from Peter Bergner bergner at gcc dot gnu.org ---
Author: bergner
Date: Mon May 12 23:08:22 2014
New Revision: 210344

URL: http://gcc.gnu.org/viewcvs?rev=210344root=gccview=rev
Log:
Reapply the old IBM 4.8 branch patches that are not upstream.

gcc/
Back port mainline subversion id 209025.
2014-04-02  Michael Meissner  meiss...@linux.vnet.ibm.com

PR target/60735
* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): If we have
software floating point or no floating point registers, do not
allow any type in the FPRs.  Eliminate a test for SPE SIMD types
in GPRs that occurs after we tested for GPRs that would never be
true.

Back port from main line:
2014-03-27  Michael Meissner  meiss...@linux.vnet.ibm.com

* config/rs6000/constraints.md (wD constraint): New constraint to
match the constant integer to get the top DImode/DFmode out of a
vector in a VSX register.

* config/rs6000/predicates.md (vsx_scalar_64bit): New predicate to
match the constant integer to get the top DImode/DFmode out of a
vector in a VSX register.

* config/rs6000/rs6000.c (rs6000_debug_reg_global): If
-mdebug=reg, print value of VECTOR_ELEMENT_SCALAR_64BIT.

* config/rs6000/rs6000.h (VECTOR_ELEMENT_SCALAR_64BIT): Macro to
define the top 64-bit vector element.

* config/rs6000/vsx.md (vsx_extract_mode, V2DI/V2DF modes):
Optimize vec_extract of 64-bit values, where the value being
extracted is in the top word, where we can use scalar
instructions.  Add direct move and store support.  Combine the big
endian/little endian vector select load support into a single insn.
(vsx_extract_mode_internal1): Likewise.
(vsx_extract_mode_internal2): Likewise.
(vsx_extract_mode_load): Likewise.
(vsx_extract_mode_store): Likewise.
(vsx_extract_mode_zero): Delete, big and little endian insns are
combined into vsx_extract_mode_load.
(vsx_extract_mode_one_le): Likewise.

* doc/md.texi (PowerPC and IBM RS6000 constraints): Document wD
constraint.

* gcc.target/powerpc/vsx-extract-1.c: New test to test VSX
vec_select optimizations.
* gcc.target/powerpc/vsx-extract-2.c: Likewise.
* gcc.target/powerpc/vsx-extract-3.c: Likewise.

PR target/60672
* gcc.target/powerpc/pr60676.c: New file, make sure xxsldwi and
xxpermdi builtins are supported.

Backport from mainline
2013-08-01  Fabien Chêne  fab...@gcc.gnu.org

PR c++/54537
* include/tr1/cmath: Remove pow(double,double) overload, remove a
duplicated comment about DR 550. Add a comment to explain the issue.
* testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc: New.

gcc/testsuite/

Back port from mainline
2013-08-01  Fabien Chêne  fab...@gcc.gnu.org
Peter Bergner  berg...@vnet.ibm.com

PR c++/54537
* g++.dg/overload/using3.C: New.
* g++.dg/overload/using2.C: Adjust.
* g++.dg/lookup/using9.C: Likewise.

gcc/cp/
Back port from mainline
2013-08-01  Fabien Chêne  fab...@gcc.gnu.org

PR c++/54537
* cp-tree.h: Check OVL_USED with OVERLOAD_CHECK.
* name-lookup.c (do_nonmember_using_decl): Make sure we have an
OVERLOAD before calling OVL_USED. Call diagnose_name_conflict
instead of issuing an error without mentioning the conflicting
declaration.

libgcc/
* config/rs6000/ibm-ldouble.c (pack_ldouble): New function.
(__gcc_qadd): Use it.
(__gcc_qmul): Likewise.
(__gcc_qdiv): Likewise.
(__gcc_qneg): Likewise.
(__gcc_stoq): Likewise.
(__gcc_dtoq): Likewise.


Added:
branches/ibm/gcc-4_8-branch/gcc/cp/ChangeLog.ibm
branches/ibm/gcc-4_8-branch/gcc/testsuite/g++.dg/overload/using3.C
branches/ibm/gcc-4_8-branch/gcc/testsuite/gcc.target/powerpc/pr60676.c
   
branches/ibm/gcc-4_8-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c
   
branches/ibm/gcc-4_8-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c
   
branches/ibm/gcc-4_8-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c
branches/ibm/gcc-4_8-branch/libgcc/ChangeLog.ibm
   
branches/ibm/gcc-4_8-branch/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc
Modified:
branches/ibm/gcc-4_8-branch/gcc/ChangeLog.ibm
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/constraints.md
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/predicates.md
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000.c
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000.h
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/vsx.md
branches/ibm/gcc-4_8-branch/gcc/cp/cp-tree.h
branches/ibm/gcc-4_8-branch/gcc/cp/name-lookup.c
branches/ibm/gcc-4_8-branch/gcc/doc/md.texi
branches/ibm/gcc-4_8-branch/gcc/testsuite/ChangeLog.ibm
branches/ibm/gcc-4_8-branch/gcc/testsuite/g++.dg/lookup/using9.C
branches/ibm/gcc-4_8-branch/gcc/testsuite/g++.dg/overload/using2.C

[Bug testsuite/60672] FAIL: g++.dg/cpp1y/auto-fn25.C -std=gnu++1y (test for errors, line 7)

2014-05-12 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60672

--- Comment #7 from Peter Bergner bergner at gcc dot gnu.org ---
Author: bergner
Date: Mon May 12 23:08:22 2014
New Revision: 210344

URL: http://gcc.gnu.org/viewcvs?rev=210344root=gccview=rev
Log:
Reapply the old IBM 4.8 branch patches that are not upstream.

gcc/
Back port mainline subversion id 209025.
2014-04-02  Michael Meissner  meiss...@linux.vnet.ibm.com

PR target/60735
* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): If we have
software floating point or no floating point registers, do not
allow any type in the FPRs.  Eliminate a test for SPE SIMD types
in GPRs that occurs after we tested for GPRs that would never be
true.

Back port from main line:
2014-03-27  Michael Meissner  meiss...@linux.vnet.ibm.com

* config/rs6000/constraints.md (wD constraint): New constraint to
match the constant integer to get the top DImode/DFmode out of a
vector in a VSX register.

* config/rs6000/predicates.md (vsx_scalar_64bit): New predicate to
match the constant integer to get the top DImode/DFmode out of a
vector in a VSX register.

* config/rs6000/rs6000.c (rs6000_debug_reg_global): If
-mdebug=reg, print value of VECTOR_ELEMENT_SCALAR_64BIT.

* config/rs6000/rs6000.h (VECTOR_ELEMENT_SCALAR_64BIT): Macro to
define the top 64-bit vector element.

* config/rs6000/vsx.md (vsx_extract_mode, V2DI/V2DF modes):
Optimize vec_extract of 64-bit values, where the value being
extracted is in the top word, where we can use scalar
instructions.  Add direct move and store support.  Combine the big
endian/little endian vector select load support into a single insn.
(vsx_extract_mode_internal1): Likewise.
(vsx_extract_mode_internal2): Likewise.
(vsx_extract_mode_load): Likewise.
(vsx_extract_mode_store): Likewise.
(vsx_extract_mode_zero): Delete, big and little endian insns are
combined into vsx_extract_mode_load.
(vsx_extract_mode_one_le): Likewise.

* doc/md.texi (PowerPC and IBM RS6000 constraints): Document wD
constraint.

* gcc.target/powerpc/vsx-extract-1.c: New test to test VSX
vec_select optimizations.
* gcc.target/powerpc/vsx-extract-2.c: Likewise.
* gcc.target/powerpc/vsx-extract-3.c: Likewise.

PR target/60672
* gcc.target/powerpc/pr60676.c: New file, make sure xxsldwi and
xxpermdi builtins are supported.

Backport from mainline
2013-08-01  Fabien Chêne  fab...@gcc.gnu.org

PR c++/54537
* include/tr1/cmath: Remove pow(double,double) overload, remove a
duplicated comment about DR 550. Add a comment to explain the issue.
* testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc: New.

gcc/testsuite/

Back port from mainline
2013-08-01  Fabien Chêne  fab...@gcc.gnu.org
Peter Bergner  berg...@vnet.ibm.com

PR c++/54537
* g++.dg/overload/using3.C: New.
* g++.dg/overload/using2.C: Adjust.
* g++.dg/lookup/using9.C: Likewise.

gcc/cp/
Back port from mainline
2013-08-01  Fabien Chêne  fab...@gcc.gnu.org

PR c++/54537
* cp-tree.h: Check OVL_USED with OVERLOAD_CHECK.
* name-lookup.c (do_nonmember_using_decl): Make sure we have an
OVERLOAD before calling OVL_USED. Call diagnose_name_conflict
instead of issuing an error without mentioning the conflicting
declaration.

libgcc/
* config/rs6000/ibm-ldouble.c (pack_ldouble): New function.
(__gcc_qadd): Use it.
(__gcc_qmul): Likewise.
(__gcc_qdiv): Likewise.
(__gcc_qneg): Likewise.
(__gcc_stoq): Likewise.
(__gcc_dtoq): Likewise.


Added:
branches/ibm/gcc-4_8-branch/gcc/cp/ChangeLog.ibm
branches/ibm/gcc-4_8-branch/gcc/testsuite/g++.dg/overload/using3.C
branches/ibm/gcc-4_8-branch/gcc/testsuite/gcc.target/powerpc/pr60676.c
   
branches/ibm/gcc-4_8-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c
   
branches/ibm/gcc-4_8-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c
   
branches/ibm/gcc-4_8-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c
branches/ibm/gcc-4_8-branch/libgcc/ChangeLog.ibm
   
branches/ibm/gcc-4_8-branch/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc
Modified:
branches/ibm/gcc-4_8-branch/gcc/ChangeLog.ibm
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/constraints.md
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/predicates.md
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000.c
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000.h
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/vsx.md
branches/ibm/gcc-4_8-branch/gcc/cp/cp-tree.h
branches/ibm/gcc-4_8-branch/gcc/cp/name-lookup.c
branches/ibm/gcc-4_8-branch/gcc/doc/md.texi
branches/ibm/gcc-4_8-branch/gcc/testsuite/ChangeLog.ibm
branches/ibm/gcc-4_8-branch/gcc/testsuite/g++.dg/lookup/using9.C
branches/ibm/gcc-4_8-branch/gcc/testsuite/g++.dg/overload/using2.C

[Bug c++/54537] undiagnosed using-declaration conflicting with used function

2014-05-12 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54537

--- Comment #4 from Peter Bergner bergner at gcc dot gnu.org ---
Author: bergner
Date: Mon May 12 23:08:22 2014
New Revision: 210344

URL: http://gcc.gnu.org/viewcvs?rev=210344root=gccview=rev
Log:
Reapply the old IBM 4.8 branch patches that are not upstream.

gcc/
Back port mainline subversion id 209025.
2014-04-02  Michael Meissner  meiss...@linux.vnet.ibm.com

PR target/60735
* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): If we have
software floating point or no floating point registers, do not
allow any type in the FPRs.  Eliminate a test for SPE SIMD types
in GPRs that occurs after we tested for GPRs that would never be
true.

Back port from main line:
2014-03-27  Michael Meissner  meiss...@linux.vnet.ibm.com

* config/rs6000/constraints.md (wD constraint): New constraint to
match the constant integer to get the top DImode/DFmode out of a
vector in a VSX register.

* config/rs6000/predicates.md (vsx_scalar_64bit): New predicate to
match the constant integer to get the top DImode/DFmode out of a
vector in a VSX register.

* config/rs6000/rs6000.c (rs6000_debug_reg_global): If
-mdebug=reg, print value of VECTOR_ELEMENT_SCALAR_64BIT.

* config/rs6000/rs6000.h (VECTOR_ELEMENT_SCALAR_64BIT): Macro to
define the top 64-bit vector element.

* config/rs6000/vsx.md (vsx_extract_mode, V2DI/V2DF modes):
Optimize vec_extract of 64-bit values, where the value being
extracted is in the top word, where we can use scalar
instructions.  Add direct move and store support.  Combine the big
endian/little endian vector select load support into a single insn.
(vsx_extract_mode_internal1): Likewise.
(vsx_extract_mode_internal2): Likewise.
(vsx_extract_mode_load): Likewise.
(vsx_extract_mode_store): Likewise.
(vsx_extract_mode_zero): Delete, big and little endian insns are
combined into vsx_extract_mode_load.
(vsx_extract_mode_one_le): Likewise.

* doc/md.texi (PowerPC and IBM RS6000 constraints): Document wD
constraint.

* gcc.target/powerpc/vsx-extract-1.c: New test to test VSX
vec_select optimizations.
* gcc.target/powerpc/vsx-extract-2.c: Likewise.
* gcc.target/powerpc/vsx-extract-3.c: Likewise.

PR target/60672
* gcc.target/powerpc/pr60676.c: New file, make sure xxsldwi and
xxpermdi builtins are supported.

Backport from mainline
2013-08-01  Fabien Chêne  fab...@gcc.gnu.org

PR c++/54537
* include/tr1/cmath: Remove pow(double,double) overload, remove a
duplicated comment about DR 550. Add a comment to explain the issue.
* testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc: New.

gcc/testsuite/

Back port from mainline
2013-08-01  Fabien Chêne  fab...@gcc.gnu.org
Peter Bergner  berg...@vnet.ibm.com

PR c++/54537
* g++.dg/overload/using3.C: New.
* g++.dg/overload/using2.C: Adjust.
* g++.dg/lookup/using9.C: Likewise.

gcc/cp/
Back port from mainline
2013-08-01  Fabien Chêne  fab...@gcc.gnu.org

PR c++/54537
* cp-tree.h: Check OVL_USED with OVERLOAD_CHECK.
* name-lookup.c (do_nonmember_using_decl): Make sure we have an
OVERLOAD before calling OVL_USED. Call diagnose_name_conflict
instead of issuing an error without mentioning the conflicting
declaration.

libgcc/
* config/rs6000/ibm-ldouble.c (pack_ldouble): New function.
(__gcc_qadd): Use it.
(__gcc_qmul): Likewise.
(__gcc_qdiv): Likewise.
(__gcc_qneg): Likewise.
(__gcc_stoq): Likewise.
(__gcc_dtoq): Likewise.


Added:
branches/ibm/gcc-4_8-branch/gcc/cp/ChangeLog.ibm
branches/ibm/gcc-4_8-branch/gcc/testsuite/g++.dg/overload/using3.C
branches/ibm/gcc-4_8-branch/gcc/testsuite/gcc.target/powerpc/pr60676.c
   
branches/ibm/gcc-4_8-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c
   
branches/ibm/gcc-4_8-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c
   
branches/ibm/gcc-4_8-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c
branches/ibm/gcc-4_8-branch/libgcc/ChangeLog.ibm
   
branches/ibm/gcc-4_8-branch/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc
Modified:
branches/ibm/gcc-4_8-branch/gcc/ChangeLog.ibm
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/constraints.md
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/predicates.md
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000.c
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000.h
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/vsx.md
branches/ibm/gcc-4_8-branch/gcc/cp/cp-tree.h
branches/ibm/gcc-4_8-branch/gcc/cp/name-lookup.c
branches/ibm/gcc-4_8-branch/gcc/doc/md.texi
branches/ibm/gcc-4_8-branch/gcc/testsuite/ChangeLog.ibm
branches/ibm/gcc-4_8-branch/gcc/testsuite/g++.dg/lookup/using9.C
branches/ibm/gcc-4_8-branch/gcc/testsuite/g++.dg/overload/using2.C

[Bug c++/61038] g++ -E is unusable with UDL strings

2014-05-12 Thread emsr at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61038

emsr at gcc dot gnu.org changed:

   What|Removed |Added

  Attachment #32783|0   |1
is obsolete||

--- Comment #10 from emsr at gcc dot gnu.org ---
Created attachment 32787
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=32787action=edit
In libcpp, is stringify_arg, test for user-defined literal strings and literal
chars.


libcpp/

2014-05-12  Edward Smith-Rowland  3dw...@verizon.net

PR c++/61038
* module.c (stringify_arg (cpp_reader *, macro_arg *)):
Check for user-defined literal strings and user-defined literal chars
to escape necessary characters.


[Bug c++/51577] dependent name lookup finds operator in global namespace

2014-05-12 Thread richard-gccbugzilla at metafoo dot co.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51577

Richard Smith richard-gccbugzilla at metafoo dot co.uk changed:

   What|Removed |Added

 CC||richard-gccbugzilla@metafoo
   ||.co.uk

--- Comment #8 from Richard Smith richard-gccbugzilla at metafoo dot co.uk ---
*** Bug 61161 has been marked as a duplicate of this bug. ***


[Bug c++/61161] wrong two-stage name lookup for overloaded operators

2014-05-12 Thread richard-gccbugzilla at metafoo dot co.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61161

Richard Smith richard-gccbugzilla at metafoo dot co.uk changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #2 from Richard Smith richard-gccbugzilla at metafoo dot co.uk ---
(In reply to Jonathan Wakely from comment #1)
 Maybe related to PR51577

Thanks, I'm pretty sure it's the same thing, dup'ing.

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


[Bug c++/12944] [meta-bug] C++ name-lookup problems

2014-05-12 Thread richard-gccbugzilla at metafoo dot co.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=12944
Bug 12944 depends on bug 61161, which changed state.

Bug 61161 Summary: wrong two-stage name lookup for overloaded operators
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61161

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |DUPLICATE


[Bug c++/10437] using namespace at global scope creates incorrect code

2014-05-12 Thread richard-gccbugzilla at metafoo dot co.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=10437

Richard Smith richard-gccbugzilla at metafoo dot co.uk changed:

   What|Removed |Added

 CC||richard-gccbugzilla@metafoo
   ||.co.uk

--- Comment #11 from Richard Smith richard-gccbugzilla at metafoo dot co.uk 
---
(In reply to Nathan Sidwell from comment #9)
 Now the second point. This a case of SFINAE failure, no diagnostic should
 be issued.

I disagree. The failure is not in the immediate context of the substitution, so
this is a hard error. GCC seems to be doing the right thing in all cases here.


[Bug c/61144] Invalid optimizations for extern vars with local weak definitions

2014-05-12 Thread bugdal at aerifal dot cx
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61144

--- Comment #15 from Rich Felker bugdal at aerifal dot cx ---
Can you clarify? As far as I can tell, the other bug is a missed optimization
and this is an overly-aggressive, incorrect optimization.


[Bug c/61162] New: possibly bad error location with -Wc++-compat

2014-05-12 Thread tromey at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61162

Bug ID: 61162
   Summary: possibly bad error location with -Wc++-compat
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: tromey at gcc dot gnu.org

Consider this source:

enum e { ZERO = 0, ONE };

enum e e_val;

void f(void)
{
  e_val = 0;
}


Compile with -Wc++-compat:

bapiya. gcc -Wc++-compat --syntax-only r.c
r.c: In function ‘f’:
r.c:7:3: warning: enum conversion in assignment is invalid in C++
[-Wc++-compat]
   e_val = 0;
   ^


I think perhaps using the location of the = would be preferable.

[Bug c++/61163] New: Placement arguments shared between allocation and deallocation even when copies prohibited

2014-05-12 Thread hstong at ca dot ibm.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61163

Bug ID: 61163
   Summary: Placement arguments shared between allocation and
deallocation even when copies prohibited
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hstong at ca dot ibm.com

In N3290 subclause 5.3.4 [expr.new] paragraph 21, the leeway to reuse the same
copy of the initialized parameter for both the call to the allocation function
and the call to the deallocation function is prefaced with [i]f the
implementation is allowed to make a copy.
Since, in the case below, list initialization does not involve copying
following the call to the converting constructor, there is no copying to speak
of and the leeway is not given.
GCC performs the reuse anyway.

### SOURCE: cat gccListInitNewPlacement.cc
extern C int printf(const char *, ...);

struct A {
   A(const A ) = delete;
   A(A ) = delete;

   A(int) : x(0) { printf(%s\n, __PRETTY_FUNCTION__); }
   ~A() { printf(%s\n, __PRETTY_FUNCTION__); }

   int x;
};

struct B {
   static void *operator new(decltype(sizeof(0)) sz, A a) {
  printf(%d %s\n, a.x++, __PRETTY_FUNCTION__);
  return ::operator new(sz);
   }

   static void operator delete(void *ptr, A a) {
  printf(%d %s\n, a.x++, __PRETTY_FUNCTION__);
  return ::operator delete(ptr);
   }

   B() { throw 0; }
};

int main() {
   try { new ({0}) B; } catch(...) { }
}


### COMPILER INVOCATION: g++ -std=c++11 -pedantic-errors -Wall -Wextra
gccListInitNewPlacement.cc -o gccListInitNewPlacement


### OUTPUT FROM RESULTING BINARY: ./gccListInitNewPlacement
A::A(int)
0 static void* B::operator new(long unsigned int, A)
1 static void B::operator delete(void*, A)
A::~A()


### EXPECTED OUTPUT:
A::A(int)
0 static void* B::operator new(long unsigned int, A)
A::A(int)
0 static void B::operator delete(void*, A)
A::~A()
A::~A()


### VERSION INFO: g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-cygwin/4.8.2/lto-wrapper.exe
Target: x86_64-pc-cygwin
Configured with:
/cygdrive/i/szsz/tmpp/cygwin64/gcc/gcc-4.8.2-3/src/gcc-4.8.2/configure
--srcdir=/cygdrive/i/szsz/tmpp/cygwin64/gcc/gcc-4.8.2-3/src/gcc-4.8.2
--prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin
--libexecdir=/usr/libexec --datadir=/usr/share --localstatedir=/var
--sysconfdir=/etc --libdir=/usr/lib --datarootdir=/usr/share
--docdir=/usr/share/doc/gcc --htmldir=/usr/share/doc/gcc/html -C
--build=x86_64-pc-cygwin --host=x86_64-pc-cygwin --target=x86_64-pc-cygwin
--without-libiconv-prefix --without-libintl-prefix --enable-shared
--enable-shared-libgcc --enable-static --enable-version-specific-runtime-libs
--enable-bootstrap --disable-__cxa_atexit --with-dwarf2 --with-tune=generic
--enable-languages=ada,c,c++,fortran,lto,objc,obj-c++ --enable-graphite
--enable-threads=posix --enable-libatomic --enable-libgomp --disable-libitm
--enable-libquadmath --enable-libquadmath-support --enable-libssp
--enable-libada --enable-libgcj-sublibs --disable-java-awt --disable-symvers
--with-ecj-jar=/usr/share/java/ecj.jar --with-gnu-ld --with-gnu-as
--with-cloog-include=/usr/include/cloog-isl --without-libiconv-prefix
--without-libintl-prefix --with-system-zlib --libexecdir=/usr/lib
Thread model: posix
gcc version 4.8.2 (GCC)


[Bug libitm/61164] New: GCC 4.9.0 fails to build libitm with fortification enabled

2014-05-12 Thread rhill at gentoo dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164

Bug ID: 61164
   Summary: GCC 4.9.0 fails to build libitm with fortification
enabled
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libitm
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rhill at gentoo dot org

We enable -D_FORTIFY_SOURCE=2 by default, but with 4.9.0 we're encountering an
error while building libitm.  It can be reproduced without modifying the
compiler by configuring with:

CXXFLAGS=-O2 -g -D_FORTIFY_SOURCE=2 ../dist/gcc/gcc-4.9.0/configure
--enable-languages=c,c++ --disable-werror --disable-bootstrap

The error is:

libtool: compile:  /home/dirtyepic/build/./gcc/xg++
-B/home/dirtyepic/build/./gcc/ -nostdinc++ -nostdinc++
-I/home/dirtyepic/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu
-I/home/dirtyepic/build/x86_64-unknown-linux-gnu/libstdc++-v3/include
-I/home/dirtyepic/dist/gcc/gcc-4.9.0/libstdc++-v3/libsupc++
-I/home/dirtyepic/dist/gcc/gcc-4.9.0/libstdc++-v3/include/backward
-I/home/dirtyepic/dist/gcc/gcc-4.9.0/libstdc++-v3/testsuite/util
-L/home/dirtyepic/build/x86_64-unknown-linux-gnu/libstdc++-v3/src
-L/home/dirtyepic/build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
-L/home/dirtyepic/build/x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
-B/usr/local/x86_64-unknown-linux-gnu/bin/
-B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem
/usr/local/x86_64-unknown-linux-gnu/include -isystem
/usr/local/x86_64-unknown-linux-gnu/sys-include -DHAVE_CONFIG_H -I.
-I../../../dist/gcc/gcc-4.9.0/libitm
-I../../../dist/gcc/gcc-4.9.0/libitm/config/linux/x86
-I../../../dist/gcc/gcc-4.9.0/libitm/config/linux
-I../../../dist/gcc/gcc-4.9.0/libitm/config/x86
-I../../../dist/gcc/gcc-4.9.0/libitm/config/posix
-I../../../dist/gcc/gcc-4.9.0/libitm/config/generic
-I../../../dist/gcc/gcc-4.9.0/libitm -mrtm -Wall -pthread -Werror -std=gnu++0x
-funwind-tables -fno-exceptions -fno-rtti -fabi-version=4 -O2 -g
-D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -MT util.lo -MD -MP -MF .deps/util.Tpo -c
../../../dist/gcc/gcc-4.9.0/libitm/util.cc  -fPIC -DPIC -o .libs/util.o

In file included from /usr/include/stdio.h:937:0,
 from ../../../dist/gcc/gcc-4.9.0/libitm/util.cc:27:
/usr/include/bits/stdio2.h: In function ‘void GTM::gtm_verror(const char*,
__va_list_tag*)’:
/usr/include/bits/stdio2.h:124:1: error: inlining failed in call to
always_inline ‘int vfprintf(FILE*, const char*, __va_list_tag*)’: function body
can be overwritten at link time
 vfprintf (FILE *__restrict __stream,
 ^
../../../dist/gcc/gcc-4.9.0/libitm/util.cc:35:31: error: called from here
   vfprintf (stderr, fmt, list);
   ^

Comparing the preprocessor output for util.cc and a couple other C++ files that
use vfprintf the most obvious difference is the declaration is missing
__inline, ie.

extern __attribute__((always_inline)) __attribute__ ((__gnu_inline__))
__attribute__ ((__artificial__)) int vfprintf

instead of

extern __inline __attribute__ ((__always_inline__)) __attribute__
((__gnu_inline__)) __attribute__ ((__artificial__)) int vfprintf

[Bug c/61162] possibly bad error location with -Wc++-compat

2014-05-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61162

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-05-13
 CC||mpolacek at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |mpolacek at gcc dot 
gnu.org
   Target Milestone|--- |4.10.0
 Ever confirmed|0   |1

--- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org ---
Yep.


[Bug c/61162] possibly bad error location with -Wc++-compat

2014-05-12 Thread tromey at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61162

--- Comment #2 from Tom Tromey tromey at gcc dot gnu.org ---
Note that it is also wrong for a conversion diagnosed
in a return:

enum e { ZERO = 0, ONE };

enum e f(void)
{
  return 0;
}


barimba. gcc --syntax-only -Wc++-compat r.c
r.c: In function ‘f’:
r.c:5:3: warning: enum conversion in return is invalid in C++ [-Wc++-compat]
   return 0;
   ^


I think it should point to the expression.

[Bug c/61162] possibly bad error location with -Wc++-compat

2014-05-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61162

--- Comment #3 from Marek Polacek mpolacek at gcc dot gnu.org ---
I posted a patch, but the location for a return stmt will need more surgery
than that.