[Bug tree-optimization/65961] [6 Regression] ice in vect_is_simple_use_1 with -O3

2015-05-19 Thread dcb314 at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65961

--- Comment #5 from David Binderman  ---
As of trunk 20150520, this bug looks fixed to me.


[Bug bootstrap/66038] [5 regression] (stage 2) build/genmatch segfaults in operand::gen_transform (gcc/hash-table.h:223)

2015-05-19 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66038

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #12 from Jakub Jelinek  ---
hashval_t should be unsigned int?  Is it some other type on your host, or is
CHAR_BIT bigger than 8, or do you have 64-bit unsigned int?


[Bug bootstrap/66038] [5 regression] (stage 2) build/genmatch segfaults in operand::gen_transform (gcc/hash-table.h:223)

2015-05-19 Thread dougmencken at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66038

--- Comment #11 from Douglas Mencken  ---
Causing commit found.

It is r218976 (e2afa5c10fd41fe708959121f373fcb5435ef5d6). With reverse-applied 
r218976's patch, 5.1.0 even reaches "Bootstrap comparison failure!‘‘ ;)

Maybe patch's author [ Author: hubicka ] can help here.

I see in patch:

-hashval_t
-hash_table_mod1 (hashval_t hash, unsigned int index)
-{
-  const struct prime_ent *p = &prime_tab[index];
-#ifdef UNSIGNED_64BIT_TYPE
-  if (sizeof (hashval_t) * CHAR_BIT <= 32)
-return mul_mod (hash, p->prime, p->inv, p->shift);
-#endif
-  return hash % p->prime;
-}

+inline hashval_t
+hash_table_mod1 (hashval_t hash, unsigned int index)
+{
+  const struct prime_ent *p = &prime_tab[index];
+  gcc_checking_assert (sizeof (hashval_t) * CHAR_BIT <= 32);
+return mul_mod (hash, p->prime, p->inv, p->shift);
+}

Before, when "sizeof (hashval_t) * CHAR_BIT <= 32”, hash % p->prime was
returned. After, <= 32 triggers assert (--> failure).

I suggest something like

inline hashval_t
hash_table_mod1 (hashval_t hash, unsigned int index)
{
  const struct prime_ent *p = &prime_tab[index];
  if (sizeof (hashval_t) * CHAR_BIT <= 32)
return mul_mod (hash, p->prime, p->inv, p->shift);
  else
return hash % p->prime;
}

[Bug lto/66180] [6 Regression] many -Wodr false positives when building LLVM with -flto

2015-05-19 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66180

--- Comment #7 from Markus Trippelsdorf  ---
(In reply to Jan Hubicka from comment #6)
> Thank you for the testcase! With the fix for anonymous types I don't seem to
> get the warnings.  Can you, please, check if that works for you and commit
> it?

I still get the warnings after r223415, but I'm not 100% sure if they
are valid or not.


[Bug tree-optimization/65447] AArch64: iv-opt causes bad addressing

2015-05-19 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65447

--- Comment #3 from amker at gcc dot gnu.org ---
Author: amker
Date: Wed May 20 05:15:56 2015
New Revision: 223433

URL: https://gcc.gnu.org/viewcvs?rev=223433&root=gcc&view=rev
Log:

PR tree-optimization/65447
* tree-ssa-loop-ivopts.c (struct iv_use): New fields.
(dump_use, dump_uses): Support to dump sub use.
(record_use): New parameters to support sub use.  Remove call to
dump_use.
(record_sub_use, record_group_use): New functions.
(compute_max_addr_offset, split_all_small_groups): New functions.
(group_address_uses, rewrite_use_address): New functions.
(strip_offset): New declaration.
(find_interesting_uses_address): Call record_group_use.
(add_candidate): New assertion.
(infinite_cost_p): Move definition forward.
(add_costs): Check INFTY cost and return immediately.
(get_computation_cost_at): Clear setup cost and dependent bitmap
for sub uses.
(determine_use_iv_cost_address): Compute cost for sub uses.
(rewrite_use_address_1): Rename from old rewrite_use_address.
(free_loop_data): Free sub uses.
(tree_ssa_iv_optimize_loop): Call group_address_uses.

gcc/testsuite
PR tree-optimization/65447
* gcc.dg/tree-ssa/pr65447.c: New test.


Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr65447.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-loop-ivopts.c


[Bug c++/66211] New: Rvalue conversion in ternary operator causes internal compiler error

2015-05-19 Thread vgheorgh at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66211

Bug ID: 66211
   Summary: Rvalue conversion in ternary operator causes internal
compiler error
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: vgheorgh at gmail dot com
  Target Milestone: ---

The code below

void f(int&){}

int main()
{
int x = 0;
double y = 1;
f(1 > 0 ? x : y);
}

should not compile, due to rvalue conversion in the ternary operator, then
trying to bind the rvalue to a non-constant reference. However, gcc51 and gcc6
HEAD crash with an internal compiler error

 internal compiler error: in convert_like_real, at cp/call.c:6471

gcc49 works (emits an error)


[Bug target/65979] Multiple issues in conftest.c prevent build on sh4-linux-gnu

2015-05-19 Thread kkojima at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65979

--- Comment #13 from Kazumoto Kojima  ---
Created attachment 35572
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35572&action=edit
reduced testcase

>From rtl dumps for 5.1.0 cc1plus against the testcase, the wrong
peephole transformation makes

(insn 92 14 15 3 (set (reg:SI 1 r1 [orig:171 D.2078 ] [171])
(reg:SI 2 r2 [172])) 252 {movsi_ie}
 (expr_list:REG_DEAD (reg:SI 2 r2 [172])
(nil)))
(insn 93 16 83 3 (set (reg:SI 2 r2)
(const_int 66602 [0x1042a])) 252 {movsi_ie}
 (nil))
(insn 83 93 18 3 (set (reg:SI 147 t)
(eq:SI (and:SI (reg:SI 1 r1 [orig:171 D.2078 ] [171])
(reg:SI 2 r2))
(const_int 0 [0]))) 1 {tstsi_t}
 (expr_list:REG_DEAD (reg:SI 2 r2)
(expr_list:REG_DEAD (reg:SI 1 r1 [orig:171 D.2078 ] [171])
(nil

into

(insn 112 14 113 3 (set (reg:SI 2 r2)
(const_int 66602 [0x1042a])) -1
 (nil))
(insn 113 112 114 3 (set (reg:SI 147 t)
(eq:SI (and:SI (reg:SI 2 r2)
(reg:SI 2 r2))
(const_int 0 [0]))) -1
 (nil))
(insn 114 113 18 3 (const_int 0 [0]) -1
 (nil))

This peephole transformation is done by

;;  mov.w   @(18,r1),r0 (r0 = HImode)
;;  mov r0,r1   (r0 = r1 = HImode)  mov.w   @(18,r1),r0
;;  ... ..,r13  (r13 = SImode)  ->  ... ..,r13
;;  tst r1,r13  tst r0,r13
(define_peephole2
  [(set (match_operand 0 "arith_reg_dest")
(match_operand 1 "arith_reg_dest"))
   (set (match_operand:SI 2 "arith_reg_dest")
(match_operand:SI 3))
   (set (reg:SI T_REG)
(eq:SI (and:SI (match_operand:SI 4 "arith_reg_operand")
   (match_operand:SI 5 "arith_reg_operand"))
   (const_int 0)))]
  "TARGET_SH1
   && peep2_reg_dead_p (3, operands[0])
   && !reg_overlap_mentioned_p (operands[0], operands[3])
   && (REGNO (operands[0]) == REGNO (operands[4])
   || REGNO (operands[0]) == REGNO (operands[5]))
   && (REGNO (operands[2]) == REGNO (operands[4])
   || REGNO (operands[2]) == REGNO (operands[5]))"
  [(const_int 0)]
{
  sh_check_add_incdec_notes (emit_move_insn (operands[2], operands[3]));
  emit_insn (gen_tstsi_t (operands[2],
  gen_rtx_REG (SImode, (REGNO (operands[1]);
})

Looks that this doesn't work when the operand 1 is equal to the operand 2
which is the case for the above insns 92, 93 and 83.  The peephole
removed with the fix in PR65153 transformed these insns prior to
the above peephole so to avoid the problem.  The patch below fixes
this case.  It looks there are similar peephole patterns,though.
Oleg, if you get the spare time, could you look into these peepholes?

--
diff --git a/config/sh/sh.md b/config/sh/sh.md
index 27f0074..5bc3401 100644
--- a/config/sh/sh.md
+++ b/config/sh/sh.md
@@ -14750,6 +14750,7 @@ label:
   "TARGET_SH1
&& peep2_reg_dead_p (3, operands[0])
&& !reg_overlap_mentioned_p (operands[0], operands[3])
+   && !reg_overlap_mentioned_p (operands[1], operands[2])
&& (REGNO (operands[0]) == REGNO (operands[4])
|| REGNO (operands[0]) == REGNO (operands[5]))
&& (REGNO (operands[2]) == REGNO (operands[4])


[Bug target/65979] Multiple issues in conftest.c prevent build on sh4-linux-gnu

2015-05-19 Thread kkojima at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65979

--- Comment #12 from Kazumoto Kojima  ---
I've looked into which stage2 object was miscompiled with bisecting
on objects for 5.1.0 and found tree-cfg.o is the one of them.
5.1.0 cross compiler miscompiles it too and I've got which change
causes the problem with bisecting on changes.
Surprisingly, it's r220922 for PR target/65153.  With reverting it
and applying the patch in the trail #c7 in PR65153, stage2 compiler
can pass conftest.c issues during configuring target libraries.
That patch simply removes a peephole and looked to be safe
from wrong code problem.  It means that there is another problem
elsewhere.  I've compared the outputs for tree-cfg.c w/wo that
peephole and found that is_ctrl_stmt was miscompiled without that
peephole.  I'll attach a reduced testcase.


[Bug target/29256] [4.8/4.9/5/6 regression] loop performance regression

2015-05-19 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256

amker at gcc dot gnu.org changed:

   What|Removed |Added

 CC||amker at gcc dot gnu.org

--- Comment #52 from amker at gcc dot gnu.org ---
I don't understand powerpc assembly well, but this looks like the same problem
on aarch64/arm.  Ah, and we are even looking at same function...

I think this is a general issue caused by inconsistency between tree level
ivopt and rtl level loop unroller.  To be specific, how we handle unrolled
induction variable registers after unrolling.

The core loop on aarch64 with options "-O3 -funroll-all-loops -mcpu=cortex-a57"
gave below output:

.L3:
add x2, x0, 16
ldr q16, [x17, x0]
add x10, x0, 32
add x9, x0, 48
add x8, x0, 64
ldr q17, [x17, x2]
add x3, x0, 80
add x6, x0, 96
add x5, x0, 112
add w1, w1, 8
ldr q19, [x17, x10]
cmp w1, w14
ldr q18, [x17, x9]
ldr q20, [x17, x8]
ldr q21, [x17, x3]
ldr q22, [x17, x6]
ldr q23, [x17, x5]
str q16, [x18, x0]
add x0, x0, 128
str q17, [x18, x2]
str q19, [x18, x10]
str q18, [x18, x9]
str q20, [x18, x8]
str q21, [x18, x3]
str q22, [x18, x6]
str q23, [x18, x5]
bcc .L3 

The tree ivopt dump is quite neat:

  :
  # ivtmp.16_28 = PHI 
  # ivtmp.19_42 = PHI 
  vect__4.13_62 = MEM[base: vectp_a.12_58, index: ivtmp.19_42, offset: 0B];
  MEM[base: vectp_c.15_63, index: ivtmp.19_42, offset: 0B] = vect__4.13_62;
  ivtmp.16_25 = ivtmp.16_28 + 1;
  ivtmp.19_41 = ivtmp.19_42 + 16;
  if (ivtmp.16_25 < bnd.7_36)
goto ;
  else
goto ;

  ...

  :
  goto ;

But after rtl unroller, we have options like "-fsplit-ivs-in-unroller" and
"-fweb".  These two options try to split the long live range of induction
vairables into seperated ones.  Evetually, with folloing fwprop and IRA, we
have multiple ivs for each original iv.  

I see two possible fixes here.  One is to implement a tree level unroller
before IVOPT and remove the rtl one.  The rtl one is some kind of too
aggressive that we didn't enable it by default with "O3".
Another is change how we handle unrolled iv in rtl unroller.  It splits
unrolled iv to avoid pseudo register with long live range since that may affect
rtl optimizers.  This assumption may hold before, but seems not true to me
nowadays, especially for induction variables.  Because on tree level ivopts, we
already made the assumption that each iv occupies a register, also ivs are
intensively used thus should live in one single hard register.  For this
specific case, we can refactor [base+index] out of memory reference and use
[new_base], [new_base+4], [new_base+8], ... etc. in unrolling.  If tree ivopts
choosses [reg+offset] addressing mode, we only need to generate instruction
sequence like "[reg+offset], [reg+(offset+4)], [reg+(offset+8)]... reg = reg +
urolled_times*step"

Thanks,
bin


[Bug c++/65954] gcc segfaults on the following input with a syntax error

2015-05-19 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65954

--- Comment #1 from Nathan Sidwell  ---
Author: nathan
Date: Wed May 20 01:54:09 2015
New Revision: 223430

URL: https://gcc.gnu.org/viewcvs?rev=223430&root=gcc&view=rev
Log:
cp/
PR c++/65954
* typeck.c (finish_class_member_access_expr): Diagnose failed
lookup of enum class member.

testsuite/
* g++.dg/cpp0x/pr65954.C: New.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/pr65954.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/typeck.c
trunk/gcc/testsuite/ChangeLog


[Bug fortran/65903] [5/6 Regression] Line continuation followed by comment character in string fails to compile

2015-05-19 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65903

Jerry DeLisle  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #10 from Jerry DeLisle  ---
Fixed on trunk and 5.1.  closing


[Bug fortran/65903] [5/6 Regression] Line continuation followed by comment character in string fails to compile

2015-05-19 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65903

--- Comment #9 from Jerry DeLisle  ---
Author: jvdelisle
Date: Wed May 20 01:51:50 2015
New Revision: 223429

URL: https://gcc.gnu.org/viewcvs?rev=223429&root=gcc&view=rev
Log:
2015-05-19  Jerry DeLisle  

PR fortran/65903
* gfortran.dg/continuation_13.f90: Update test.
* gfortran.dg/pr65903.f90: New test.

Added:
branches/gcc-5-branch/gcc/testsuite/gfortran.dg/pr65903.f90
Modified:
branches/gcc-5-branch/gcc/testsuite/ChangeLog
branches/gcc-5-branch/gcc/testsuite/gfortran.dg/continuation_13.f90


[Bug libstdc++/65913] Linking failure without -latomic

2015-05-19 Thread hp at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65913

Hans-Peter Nilsson  changed:

   What|Removed |Added

 CC||hp at gcc dot gnu.org

--- Comment #4 from Hans-Peter Nilsson  ---
(In reply to yan12125 from comment #3)
> Sorry, but I don't quite understand. Does that mean for all the future
> versions (5.2, 6.0, etc.) -latomic flag is necessary if
> atomic::is_lock_free() is used in my program?

>From my reading of the comments, the patch and current svn sources, the answer
is "no".  I'm guessing sooner or later the proposed patch will also be posted
to the gcc-patches@ list and promptly reviewed and committed.  Then hopefully
back-ported in time for 5.2.  But that's just a guess.


[Bug fortran/65903] [5/6 Regression] Line continuation followed by comment character in string fails to compile

2015-05-19 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65903

--- Comment #8 from Jerry DeLisle  ---
Author: jvdelisle
Date: Wed May 20 01:50:34 2015
New Revision: 223428

URL: https://gcc.gnu.org/viewcvs?rev=223428&root=gcc&view=rev
Log:
2015-05-19  Jerry DeLisle  

PR fortran/65903
* io.c (format_lex): Change to NONSTRING when checking for
possible doubled quote.
* scanner.c (gfc_next_char_literal): Revert change from 64506
and add a check for quotes and return.

Modified:
branches/gcc-5-branch/gcc/fortran/ChangeLog
branches/gcc-5-branch/gcc/fortran/io.c
branches/gcc-5-branch/gcc/fortran/scanner.c


[Bug middle-end/55035] reload1.c:3766:41: error: ‘orig_dup[0]’ may be used uninitialized in this function (for fr30, microblaze, moxie, rl78)

2015-05-19 Thread miyuki at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55035

Mikhail Maltsev  changed:

   What|Removed |Added

   Last reconfirmed|2015-04-09 00:00:00 |2015-5-20
 CC||miyuki at gcc dot gnu.org
  Known to fail||6.0

--- Comment #5 from Mikhail Maltsev  ---
Reduced testcase:

$ cat ./warn2.cc
int arr[1];
int N;

void bar();

void foo()
{
  int temp[2];
  for (int i = 0; i < N; i++)
temp[i] = arr[i];
  bar();
  for (int i = 0; i < N; i++)
arr[i] = temp[i];
}


$ /opt/gcc-6.0.0/bin/g++ -c -Wall -O2 -fdump-tree-all ./warn2.cc
./warn2.cc: In function 'void foo()':
./warn2.cc:13:21: warning: 'temp[0]' may be used uninitialized in this function
[-Wmaybe-uninitialized]
 arr[i] = temp[i];

$ /opt/gcc-6.0.0/bin/g++ -c -Wall -O2 -fno-tree-sra ./warn2.cc
(no warning)

GCC performs scalar replacement of "temp" and unrolls both loops. N is global
and can be modified by bar(). The final GIMPLE looks like this:

$ cat ./warn2.cc.190t.optimized

void foo() ()
{
  int temp$0;
  int N.0_18;
  int N.0_24;

  :
  N.0_24 = N;
  if (N.0_24 <= 0)
goto ;
  else
goto ;

  :
  temp$0_25 = arr[0];

  :
  # temp$0_26 = PHI 
  bar ();
  N.0_18 = N;
  if (N.0_18 <= 0)
goto ;
  else
goto ;

  :
  arr[0] = temp$0_26;

  :
  return;
}

Here temp$0_27(D)(2) is the "uninitialized" case. In the original testcase
recog_data.n_dups is considered escaped and orig_dup[0] is treated the same way
as temp[0].


[Bug c++/65835] bootstrap failure: multiple invalid conversions from ‘const char*’ to ‘char*’ [-fpermissive] in winnt.c

2015-05-19 Thread tbsaunde at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65835

--- Comment #2 from tbsaunde at gcc dot gnu.org ---
Author: tbsaunde
Date: Wed May 20 01:03:51 2015
New Revision: 223423

URL: https://gcc.gnu.org/viewcvs?rev=223423&root=gcc&view=rev
Log:
fixup hash table descriptor in winnt.c

gcc/ChangeLog:

2015-05-19  Trevor Saunders  

PR c++/65835
* config/i386/winnt.c (struct wrapped_symbol_hasher): Change
value_type to const char *.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/winnt.c


Message Quarantined: adjustment reminder

2015-05-19 Thread bcbsri_hosted
Your email sent to disant...@bcbsri.org was not delivered and has been 
quarantined by Proofpoint because it violated the attachments rule. One or more 
of the files attached in your email cannot be sent via email. If you believe 
that this is an error, please contact the BCBSRI service desk.


[Bug c++/66210] Variable template specialization does not work with alias-declarations

2015-05-19 Thread bruno.manga95 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66210

Bruno Manganelli  changed:

   What|Removed |Added

   Severity|minor   |normal


[Bug libstdc++/66146] call_once not C++11-compliant on ppc64le

2015-05-19 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66146

--- Comment #7 from Martin Sebor  ---
I opened http://sourceware.org/bugzilla/show_bug.cgi?id=18435 for the glibc bug
and attached a lightly tested patch to it.


[Bug c++/66210] New: Variable template specialization does not work with alias-declarations

2015-05-19 Thread bruno.manga95 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66210

Bug ID: 66210
   Summary: Variable template specialization does not work with
alias-declarations
   Product: gcc
   Version: 5.1.0
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: bruno.manga95 at gmail dot com
  Target Milestone: ---

Created attachment 35571
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35571&action=edit
testcase

In code such as the following, alias-declarations causes a variable to be
instantatiated from the non-specialized variable template

using resultType = const char*;

template
T pi = (T)(3.1415926535897932385);

template<>
resultType pi = "pi";

NOTE: using a typedef does not generate the same error and the code compiles


[Bug c++/61941] Mis-parsing of warn_unused_result function with ref-qualifiers

2015-05-19 Thread thiago at kde dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61941

--- Comment #2 from Thiago Macieira  ---
ping, any updates?


[Bug libstdc++/38265] STL treats explicit constructors as converting constructors

2015-05-19 Thread gromer at google dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38265

Geoff Romer  changed:

   What|Removed |Added

 CC||gromer at google dot com

--- Comment #14 from Geoff Romer  ---
> The C++11 standard clarifies that this is intended to work. The range
> constructors require the type to be EmplaceConstructible into the container
> from the iterator's value_type

But see [sequence.reqmts]/p3: "i and j denote iterators satisfying input
iterator requirements and refer to elements implicitly convertible to
value_type". So this is not "intended to work" per se; a conforming library
could disallow it. However, the notes on LWG 536 say "Some support, not
universal, for respecting the explicit qualifier", so it looks like the
standard intentionally permits this as a conforming extension.

In principle, I think "perfect initialization" is what's called for here: the
range ctor should be explicit if and only if it uses an explicit constructor
for value_type. However, I doubt it's worth the trouble (OTOH, it definitely
will be worth the trouble when/if we get single-argument range constructors).


[Bug lto/66027] lto1: internal compiler error: in odr_types_equivalent_p

2015-05-19 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66027

--- Comment #9 from Jan Hubicka  ---
Actually it turns out I already fixed this on mainline. The following hunk
should be backported to GCC 5 I guess.
Index: ipa-devirt.c
===
--- ipa-devirt.c(revision 223252)
+++ ipa-devirt.c(working copy)
@@ -1536,6 +1536,7 @@ odr_types_equivalent_p (tree t1, tree t2
break;
   }
 case VOID_TYPE:
+case NULLPTR_TYPE:
   break;

 default:


[Bug lto/66027] lto1: internal compiler error: in odr_types_equivalent_p

2015-05-19 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66027

Jan Hubicka  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |hubicka at gcc dot 
gnu.org

--- Comment #8 from Jan Hubicka  ---
Hmm, type preloading strikes back.  We should not try to look into the main
variant of VOIDTYPE.


[Bug lto/66180] [6 Regression] many -Wodr false positives when building LLVM with -flto

2015-05-19 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66180

--- Comment #6 from Jan Hubicka  ---
Thank you for the testcase! With the fix for anonymous types I don't seem to
get the warnings.  Can you, please, check if that works for you and commit it?


[Bug lto/66180] [6 Regression] many -Wodr false positives when building LLVM with -flto

2015-05-19 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66180

--- Comment #5 from Markus Trippelsdorf  ---
For example:

 % cat foo1.cpp
#include 
namespace {
class A {
  int i;
};
}
class G {
  std::unique_ptr foo() const;
};
std::unique_ptr G::foo() const { return std::make_unique(); }

 % cat foo2.cpp
#include 
namespace {
class A {
  bool a;
};
}
class H {
  std::unique_ptr bar() const;
};
std::unique_ptr H::bar() const { return std::make_unique(); }

 % g++ -flto -shared -std=c++14 foo1.cpp foo2.cpp
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/tuple:102:12: warning: type
‘struct _Head_base’ violates one definition rule [-Wodr]
 struct _Head_base<_Idx, _Head, false>
 ^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/tuple:102:12: note: a
different type is defined in another translation unit
 struct _Head_base<_Idx, _Head, false>
 ^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/tuple:147:13: note: the first
difference of corresponding definitions is field ‘_M_head_impl’
   _Head _M_head_impl;
  ^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/tuple:147:13: note: a field of
same name but different type is defined in another translation unit
   _Head _M_head_impl;
  ^
foo1.cpp:3:7: note: type ‘struct A’ defined in anonymous namespace can not
match type ‘struct A’
 class A {
^
foo2.cpp:3:7: note: the incompatible type defined in anonymous namespace in
another translation unit
 class A {
^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/tuple:180:12: warning: type
‘struct _Tuple_impl’ violates one definition rule [-Wodr]
 struct _Tuple_impl<_Idx, _Head, _Tail...>
 ^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/tuple:180:12: note: a type
with different bases is defined in another translation unit
 struct _Tuple_impl<_Idx, _Head, _Tail...>
 ^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/tuple:596:11: warning: type
‘struct tuple’ violates one definition rule [-Wodr]
 class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2>
^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/tuple:596:11: note: a type
with different bases is defined in another translation unit
 class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2>
^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/unique_ptr.h:129:11:
warning: type ‘struct unique_ptr’ violates one definition rule [-Wodr]
 class unique_ptr
^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/unique_ptr.h:129:11:
note: a different type is defined in another translation unit
 class unique_ptr
^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/unique_ptr.h:147:57:
note: the first difference of corresponding definitions is field ‘_M_t’
   __tuple_type  _M_t;
  ^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/unique_ptr.h:147:57:
note: a field of same name but different type is defined in another translation
unit
   __tuple_type  _M_t;
  ^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/unique_ptr.h:146:57:
note: type ‘struct __tuple_type’ should match type ‘struct __tuple_type’ that
itself violate one definition rule
   typedef std::tuple  __tuple_type;
  ^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/unique_ptr.h:146:57:
note: the incompatible type is defined here
   typedef std::tuple  __tuple_type;
  ^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/unique_ptr.h:151:41:
warning: type ‘struct element_type’ violates one definition rule [-Wodr]
   typedef _Tp   element_type;
  ^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/unique_ptr.h:151:41:
note: a different type is defined in another translation unit
   typedef _Tp   element_type;
  ^
foo1.cpp:4:7: note: the first difference of corresponding definitions is field
‘i’
   int i;
^
foo2.cpp:4:8: note: a field with different name is defined in another
translation unit
   bool a;
 ^

[Bug fortran/66193] ICE for initialisation of some non-zero-sized arrays

2015-05-19 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66193

--- Comment #9 from Thomas Koenig  ---
(In reply to Thomas Koenig from comment #8)
> This patch looks good:

but fixes only the ICE, not the wrong-code issue in comment#1.


[Bug fortran/66193] ICE for initialisation of some non-zero-sized arrays

2015-05-19 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66193

--- Comment #8 from Thomas Koenig  ---
This patch looks good:

--- arith.c (Revision 223202)
+++ arith.c (Arbeitskopie)
@@ -1390,6 +1390,12 @@ reduce_binary (arith (*eval) (gfc_expr *, gfc_expr
   if (op1->expr_type == EXPR_CONSTANT && op2->expr_type == EXPR_CONSTANT)
 return eval (op1, op2, result);

+  if (op1->expr_type == EXPR_ARRAY)
+gfc_check_constructor_type (op1);
+
+  if (op2->expr_type == EXPR_ARRAY)
+gfc_check_constructor_type (op2);
+
   if (op1->expr_type == EXPR_CONSTANT && op2->expr_type == EXPR_ARRAY)
 return reduce_binary_ca (eval, op1, op2, result);


[Bug target/62231] [4.8/4.9 regression] Exception handling broken on powerpc-e500v2-linux-gnuspe

2015-05-19 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62231

--- Comment #15 from joseph at codesourcery dot com  ---
Any problem seen on 603e is a different issue from this (fixed) 
e500-specific issue and should not be discussed in this bug.


[Bug fortran/66193] ICE for initialisation of some non-zero-sized arrays

2015-05-19 Thread sgk at troutmask dot apl.washington.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66193

--- Comment #7 from Steve Kargl  ---
On Tue, May 19, 2015 at 06:30:57PM +, tkoenig at gcc dot gnu.org wrote:
> The problem manifests itself in reduce_binary_ca.  This function
> gets handed an array constructor of type real whose elements are
> integer.  This makes no sense.
> 
> (gdb) p *op1
> $6 = {expr_type = EXPR_CONSTANT, ts = {type = BT_REAL, kind = 4, 
> ...
> 
> (gdb) p *op2
> $7 = {expr_type = EXPR_ARRAY, ts = {type = BT_REAL, kind = 4, u = {derived =
> 0x0, cl = 0x0, pad = 0}, 
> 
> ...
> 
> (gdb) p *(c->expr)
> $9 = {expr_type = EXPR_CONSTANT, ts = {type = BT_INTEGER, kind = 4, u =
> {derived = 0x0, cl = 0x0, 
> 
> So the real error is somewhere else.
> 

I suspect that we are missing an explicit type conversion step.
In array.c(gfc_match_array_constructor), we have code starting
at line 1141

  /* Size must be calculated at resolution time.  */
  if (seen_ts)
{
  expr = gfc_get_array_expr (ts.type, ts.kind, &where);
  expr->ts = ts;
}
  else
expr = gfc_get_array_expr (BT_UNKNOWN, 0, &where);

I wonder if we should walk the array and do a conversion after
setting 'expr->ts = ts'.


[Bug fortran/66106] ICE on incomplete interface operator block (gfc_op2string)

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66106

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.2

--- Comment #3 from kargl at gcc dot gnu.org ---
Fixed on trunk and 5-branch.  Thanks for the bug report.


[Bug fortran/66106] ICE on incomplete interface operator block (gfc_op2string)

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66106

--- Comment #2 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Tue May 19 18:34:55 2015
New Revision: 223411

URL: https://gcc.gnu.org/viewcvs?rev=223411&root=gcc&view=rev
Log:
Fix the ChangeLog entries to have the correct PR fortran/66106
designation.

Modified:
branches/gcc-5-branch/gcc/fortran/ChangeLog
branches/gcc-5-branch/gcc/testsuite/ChangeLog


[Bug fortran/66057] ICE for incomplete generic statement (gfc_match_generic)

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66057

--- Comment #6 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Tue May 19 18:31:39 2015
New Revision: 223410

URL: https://gcc.gnu.org/viewcvs?rev=223410&root=gcc&view=rev
Log:
2015-05-19  Steven G. Kargl  

PR fortran/66057
* interface.c(gfc_match_end_interface): Enforce F2008 C1202 (R1201).
* match.c(gfc_op2string): Return 'none' for INTRINSIC_NONE.


2015-05-19  Steven G. Kargl  

PR fortran/66057
* gfortran.dg/interface_operator_1.f90: New tests.

Added:
branches/gcc-5-branch/gcc/testsuite/gfortran.dg/interface_operator_1.f90
Modified:
branches/gcc-5-branch/gcc/fortran/ChangeLog
branches/gcc-5-branch/gcc/fortran/interface.c
branches/gcc-5-branch/gcc/fortran/match.c
branches/gcc-5-branch/gcc/testsuite/ChangeLog


[Bug fortran/66193] ICE for initialisation of some non-zero-sized arrays

2015-05-19 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66193

Thomas Koenig  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-05-19
 Ever confirmed|0   |1

--- Comment #5 from Thomas Koenig  ---
This does not fail:

ig25@linux-fd1f:~/Krempel/Constructor> cat gar.f90
   program p
  real :: z(2)
  z = [real :: 1, 2] + 1
  print *,z
   end
ig25@linux-fd1f:~/Krempel/Constructor> gfortran gar.f90 
ig25@linux-fd1f:~/Krempel/Constructor> ./a.out
   1.   2.


[Bug fortran/66193] ICE for initialisation of some non-zero-sized arrays

2015-05-19 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66193

--- Comment #6 from Thomas Koenig  ---
The problem manifests itself in reduce_binary_ca.  This function gets handed an
array constructor of type real whose elements are integer.  This makes no
sense.

(gdb) p *op1
$6 = {expr_type = EXPR_CONSTANT, ts = {type = BT_REAL, kind = 4, 
...

(gdb) p *op2
$7 = {expr_type = EXPR_ARRAY, ts = {type = BT_REAL, kind = 4, u = {derived =
0x0, cl = 0x0, pad = 0}, 

...

(gdb) p *(c->expr)
$9 = {expr_type = EXPR_CONSTANT, ts = {type = BT_INTEGER, kind = 4, u =
{derived = 0x0, cl = 0x0, 

So the real error is somewhere else.


[Bug fortran/66057] ICE for incomplete generic statement (gfc_match_generic)

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66057

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.2

--- Comment #5 from kargl at gcc dot gnu.org ---
Fixed on trunk and 5-branch.  Thanks for the bug report.


[Bug gcov-profile/66209] New: Out of memory when compiling with --coverage and optimizations

2015-05-19 Thread wellnhofer at aevum dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66209

Bug ID: 66209
   Summary: Out of memory when compiling with --coverage and
optimizations
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: gcov-profile
  Assignee: unassigned at gcc dot gnu.org
  Reporter: wellnhofer at aevum dot de
  Target Milestone: ---

Created attachment 35570
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35570&action=edit
Problematic source file

Compiling the attached file `scanners.c` with --coverage and -O1 or -O2 results
in:

$ gcc -O1 --coverage -c scanners.c

cc1: out of memory allocating 4064 bytes after a total of 2528780288 bytes

I'm using gcc 4.9.1 shipped with Ubuntu 14.10.

The source file contains a single function generated with re2c from the
following input:

// Try to match email autolink after first <, returning num of chars matched.
int _scan_autolink_email(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;
/*!re2c
  [a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+
[@]
[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?
([.][a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*
[>] { return (p - start); }
  .? { return 0; }
*/
}


[Bug fortran/66057] ICE for incomplete generic statement (gfc_match_generic)

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66057

--- Comment #4 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Tue May 19 18:20:12 2015
New Revision: 223409

URL: https://gcc.gnu.org/viewcvs?rev=223409&root=gcc&view=rev
Log:
2015-05-19  Steven G. Kargl  

PR fortran/66057
* decl.c(gfc_match_generic):  Detected a malformed GENERIC statement.

2015-05-19  Steven G. Kargl  

PR fortran/66057
* gfortran.dg/generic_29.f90: New tests.

Added:
branches/gcc-5-branch/gcc/testsuite/gfortran.dg/generic_29.f90
Modified:
branches/gcc-5-branch/gcc/fortran/ChangeLog
branches/gcc-5-branch/gcc/fortran/decl.c
branches/gcc-5-branch/gcc/testsuite/ChangeLog


[Bug fortran/66052] Segmentation fault for misplaced protected statement

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66052

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.2

--- Comment #4 from kargl at gcc dot gnu.org ---
Fixed on trunk and 5-branch.  Thanks for the bug report.


[Bug fortran/66052] Segmentation fault for misplaced protected statement

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66052

--- Comment #3 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Tue May 19 18:10:44 2015
New Revision: 223408

URL: https://gcc.gnu.org/viewcvs?rev=223408&root=gcc&view=rev
Log:
2015-05-19  Steven G. Kargl  

PR fortran/66052
* decl.c(gfc_match_protected): Prevent dereference of NULL pointer. 

2015-05-19  Steven G. Kargl  

PR fortran/66052
* gfortran.dg/protected_9.f90: New test.

Added:
branches/gcc-5-branch/gcc/testsuite/gfortran.dg/protected_9.f90
Modified:
branches/gcc-5-branch/gcc/fortran/ChangeLog
branches/gcc-5-branch/gcc/fortran/decl.c
branches/gcc-5-branch/gcc/testsuite/ChangeLog


[Bug fortran/66182] Unneeded temporary for elemental functions of function results

2015-05-19 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66182

--- Comment #1 from Thomas Koenig  ---
Of course, this only works if the types of the elemental function and the
function itself match.


[Bug fortran/66045] ICE on incorrect code with null

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66045

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.2

--- Comment #4 from kargl at gcc dot gnu.org ---
Fixed on trunk and 5-branch.  Thanks for the bug report.


[Bug fortran/66044] ICE on misplaced entry statement

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66044

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.2

--- Comment #5 from kargl at gcc dot gnu.org ---
Fixed on trunk and 5-branch.  Thanks for the bug report.


[Bug fortran/66043] ICE on storage_size of null or output of null array

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66043

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.2

--- Comment #6 from kargl at gcc dot gnu.org ---
Fixed on trunk and 5-branch.  Thanks for the bug report.


[Bug target/62231] [4.8/4.9 regression] Exception handling broken on powerpc-e500v2-linux-gnuspe

2015-05-19 Thread andri.yngvason at marel dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62231

Andri Yngvason  changed:

   What|Removed |Added

 CC||andri.yngvason at marel dot com

--- Comment #14 from Andri Yngvason  ---
I have the same problem with 5.1 on a 603e, even though the patches from
comment #4 seem to have been applied. I get the same stack trace as seen in
comment #3.

It doesn't matter whether I compile with --with-cpu=603e or without.


[Bug fortran/66045] ICE on incorrect code with null

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66045

--- Comment #3 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Tue May 19 17:59:58 2015
New Revision: 223406

URL: https://gcc.gnu.org/viewcvs?rev=223406&root=gcc&view=rev
Log:
2015-05-19  Steven G. Kargl  

PR fortran/66045
* expr.c (gfc_check_assign):  Check for assignment of NULL() instead
of the (intended) pointer assignment.

2015-05-19  Steven G. Kargl  

PR fortran/66045
* gfortran.dg/null1.f90: New test.

Added:
branches/gcc-5-branch/gcc/testsuite/gfortran.dg/null1.f90
Modified:
branches/gcc-5-branch/gcc/fortran/ChangeLog
branches/gcc-5-branch/gcc/fortran/expr.c
branches/gcc-5-branch/gcc/testsuite/ChangeLog


[Bug lto/66180] [6 Regression] many -Wodr false positives when building LLVM with -flto

2015-05-19 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66180

--- Comment #4 from Jan Hubicka  ---
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/stl_pair.h:96:12:
warning: type ‘struct pair’ violates one definition rule [-Wodr]
 struct pair
 ^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/stl_pair.h:96:12: note: a
different type is defined in another translation unit
 struct pair
 ^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/stl_pair.h:102:11: note:
the first difference of corresponding definitions is field ‘second’
   _T2 second;/// @c second is a copy of the second object
^
/home/trippels/gcc_6/usr/local/include/c++/6.0.0/bits/stl_pair.h:102:11: note:
a field of same name but different type is defined in another translation unit
   _T2 second;/// @c second is a copy of the second object
^
/home/trippels/llvm/tools/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp:131:10:
note: type ‘struct GroupInfo’ defined in anonymous namespace can not match type
‘struct GroupInfo’
   struct GroupInfo {
   ^
/home/trippels/llvm/tools/clang/utils/TableGen/ClangSACheckersEmitter.cpp:73:8:
note: the incompatible type defined in anonymous namespace in another
translation unit
 struct GroupInfo {
 ^

This looks like a real LLVM bug.  If you do 

class bar {
  anonymous_namespace_type foo; 
}

then definin bar in non-anonymous namespace in more than one unit is ODR
violation (because the type of field FOO is different in each of units).  I
think that it is what the warning is about: the instantiation is non-anonymous
of type _T2=GroupInfo that is anonymous.

[Bug target/29256] [4.8/4.9/5/6 regression] loop performance regression

2015-05-19 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256

--- Comment #51 from Jeffrey A. Law  ---
Configure for powerpc-linux-gnuspec target with the --eanble-e500_double
option:


/home/gcc/GIT-2/gcc/configure powerpc-linux-gnuspe --enable-e500_double

Testcase:
# define N  200
extern double   a[N],c[N];
void tuned_STREAM_Copy()
{
int j;
for (j=0; j

[Bug fortran/66044] ICE on misplaced entry statement

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66044

--- Comment #4 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Tue May 19 17:47:12 2015
New Revision: 223405

URL: https://gcc.gnu.org/viewcvs?rev=223405&root=gcc&view=rev
Log:
2015-05-19  Steven G. Kargl  

PR fortran/66044
* decl.c(gfc_match_entry):  Change a gfc_internal_error() into
a gfc_error() 

2015-05-19  Steven G. Kargl  

PR fortran/66044
* gfortran.dg/entry_21.f90: New test.

Added:
branches/gcc-5-branch/gcc/testsuite/gfortran.dg/entry_21.f90
Modified:
branches/gcc-5-branch/gcc/fortran/ChangeLog
branches/gcc-5-branch/gcc/fortran/decl.c
branches/gcc-5-branch/gcc/testsuite/ChangeLog


[Bug fortran/66043] ICE on storage_size of null or output of null array

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66043

--- Comment #5 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Tue May 19 17:37:42 2015
New Revision: 223401

URL: https://gcc.gnu.org/viewcvs?rev=223401&root=gcc&view=rev
Log:
2015-05-19  Steven G. Kargl  

PR fortran/66043
* check.c (gfc_check_storage_size): Prevent the direct use of NULL()
in STORAGE_SIZE() reference.

2015-05-19  Steven G. Kargl  

PR fortran/66043
* gfortran.dg/storage_size_6.f90: New tests.

Added:
branches/gcc-5-branch/gcc/testsuite/gfortran.dg/storage_size_6.f90
Modified:
branches/gcc-5-branch/gcc/fortran/ChangeLog
branches/gcc-5-branch/gcc/fortran/check.c
branches/gcc-5-branch/gcc/testsuite/ChangeLog


[Bug libstdc++/66146] call_once not C++11-compliant on ppc64le

2015-05-19 Thread andrey.vul at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66146

--- Comment #6 from Andrey V  ---
Same failure on s390x.


[Bug fortran/66040] ICE on misplaced sequence in function

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66040

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.2

--- Comment #7 from kargl at gcc dot gnu.org ---
Fixed on trunk and 5-branch.  Thanks for the bug report.


[Bug fortran/66040] ICE on misplaced sequence in function

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66040

--- Comment #6 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Tue May 19 17:25:09 2015
New Revision: 223394

URL: https://gcc.gnu.org/viewcvs?rev=223394&root=gcc&view=rev
Log:
2015-05-19  Steven G. Kargl  

PR fortran/66040
* parse.c(verify_st_order): Replace a gfc_internal_error with your
generic gfc_error.

2015-05-19  Steven G. Kargl  

PR fortran/66040
* gfortran.dg/misplaced_statement.f90: New test.

Added:
branches/gcc-5-branch/gcc/testsuite/gfortran.dg/misplaced_statement.f90
Modified:
branches/gcc-5-branch/gcc/fortran/ChangeLog
branches/gcc-5-branch/gcc/fortran/parse.c
branches/gcc-5-branch/gcc/testsuite/ChangeLog


[Bug fortran/66039] ICE on incomplete parentheses at rewind, flush, endfile, backspace

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66039

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.2

--- Comment #4 from kargl at gcc dot gnu.org ---
Fixed on trunk and 5-branch.  Thanks for the bug report.


[Bug fortran/66039] ICE on incomplete parentheses at rewind, flush, endfile, backspace

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66039

--- Comment #3 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Tue May 19 17:13:02 2015
New Revision: 223390

URL: https://gcc.gnu.org/viewcvs?rev=223390&root=gcc&view=rev
Log:
2015-05-19  Steven G. Kargl  

PR fortran/66039
* io.c (match_filepos): Check for incomplete/mangled REWIND, FLUSH,
BACKSPACE, and ENDFILE statements

2015-05-19  Steven G. Kargl  

PR fortran/66039
* gfortran.dg/filepos1.f90: New test

Added:
branches/gcc-5-branch/gcc/testsuite/gfortran.dg/filepos1.f90
Modified:
branches/gcc-5-branch/gcc/fortran/ChangeLog
branches/gcc-5-branch/gcc/fortran/io.c
branches/gcc-5-branch/gcc/testsuite/ChangeLog


[Bug fortran/64925] ICE with same names for dummy arg and internal procedure

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64925

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.2

--- Comment #5 from kargl at gcc dot gnu.org ---
Fixed on trunk and 5-branch.  Thaks for the bug report.


[Bug fortran/64925] ICE with same names for dummy arg and internal procedure

2015-05-19 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64925

--- Comment #4 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Tue May 19 17:01:25 2015
New Revision: 223388

URL: https://gcc.gnu.org/viewcvs?rev=223388&root=gcc&view=rev
Log:
2015-05-19  Steven G. Kargl  

PR fortran/64925
* symbol.c(check_conflict):  Check for a conflict between a dummy
argument and an internal procedure name.

2015-05-19  Steven G. Kargl  

PR fortran/64925
* gfortran.dg/pr64925.f90: New test.

Added:
branches/gcc-5-branch/gcc/testsuite/gfortran.dg/pr64925.f90
Modified:
branches/gcc-5-branch/gcc/fortran/ChangeLog
branches/gcc-5-branch/gcc/fortran/symbol.c
branches/gcc-5-branch/gcc/testsuite/ChangeLog


[Bug target/66201] [avr] ICE in avr_print_operand: Bad address

2015-05-19 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66201

--- Comment #2 from Georg-Johann Lay  ---
In short: If avr we should skip that test, or at least remove code which is
using that function, e.g. #ifdef __AVR__.


[Bug target/66201] [avr] ICE in avr_print_operand: Bad address

2015-05-19 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66201

--- Comment #1 from Georg-Johann Lay  ---
IMO using operands attached to "m" constraint in the asm template is no valid
avr code.  You can never know the matching instructions because "m" is too
generic: Use LD, LD+ or LDS?

The only valid use of that constraint on avr is to indicate that respective
memory is clobbererd by means of "+m".  To perform the respective change,
however, you'll need the address in a register, i.e. "b" or similar, or you
know in advance that the address is known at link time an may use "s" etc.

Moreover the insn itself is invalid because we don't have DImode support in the
avr backend.


[Bug middle-end/66199] [4.9/5 Regression] lastprivate/linear clause issues on combined constructs

2015-05-19 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66199

--- Comment #1 from Jakub Jelinek  ---
Author: jakub
Date: Tue May 19 16:16:15 2015
New Revision: 223387

URL: https://gcc.gnu.org/viewcvs?rev=223387&root=gcc&view=rev
Log:
PR middle-end/66199
* tree.h (OMP_TEAMS_COMBINED): Define.
* gimplify.c (enum gimplify_omp_var_data): Add
GOVD_LINEAR_LASTPRIVATE_NO_OUTER.
(enum omp_region_type): Add ORT_COMBINED_TEAMS.
(omp_notice_variable): Accept both ORT_TEAMS
and ORT_COMBINED_TEAMS.  Don't recurse if
GOVD_LINEAR_LASTPRIVATE_NO_OUTER is set and either
GOVD_LINEAR is set, or GOVD_LASTPRIVATE without
GOVD_FIRSTPRIVATE.
(omp_no_lastprivate): New function.
(gimplify_scan_omp_clauses): For OMP_CLAUSE_LASTPRIVATE
and OMP_CLAUSE_LINEAR, if omp_no_lastprivate, don't
notice_outer and set appropriate bits, otherwise make
sure default(none) combined constructs won't complain.
(gimplify_adjust_omp_clauses): Remove OMP_CLAUSE_LINEAR
outer special casing, for OMP_CLAUSE_LASTPRIVATE if
omp_no_lastprivate either remove the clause or turn it
into OMP_CLAUSE_PRIVATE.
(gimplify_omp_for): Fix up handling of implicit
lastprivate or linear iterators.
(gimplify_omp_workshare): For OMP_TEAMS_COMBINED use
ORT_COMBINED_TEAMS.
* omp-low.c (lower_omp_for_lastprivate): For combined
for simd use fd.loop.n2 from the for rather than simd.
gcc/c/
* c-parser.c (c_parser_omp_for_loop): Don't add
OMP_CLAUSE_SHARED to OMP_PARALLEL_CLAUSES when moving
OMP_CLAUSE_LASTPRIVATE clause to OMP_FOR_CLAUSES.
(c_parser_omp_teams): Set OMP_TEAMS_COMBINED for combined
constructs.
gcc/cp/
* parser.c (cp_parser_omp_for_loop): Don't add
OMP_CLAUSE_SHARED to OMP_PARALLEL_CLAUSES when moving
OMP_CLAUSE_LASTPRIVATE clause to OMP_FOR_CLAUSES.
(cp_parser_omp_teams): Set OMP_TEAMS_COMBINED for combined
constructs.
gcc/fortran/
* trans-openmp.c (gfc_trans_omp_teams): Set OMP_TEAMS_COMBINED for
combined constructs.
(gfc_trans_omp_target): Make sure BIND_EXPR has non-NULL
BIND_EXPR_BLOCK.
libgomp/
* testsuite/libgomp.c/pr66199-1.c: New test.
* testsuite/libgomp.c/pr66199-2.c: New test.
* testsuite/libgomp.c++/pr66199-1.C: New test.
* testsuite/libgomp.c++/pr66199-2.C: New test.
* testsuite/libgomp.fortran/pr66199-1.f90: New test.
* testsuite/libgomp.fortran/pr66199-2.f90: New test.

Added:
trunk/libgomp/testsuite/libgomp.c++/pr66199-1.C
trunk/libgomp/testsuite/libgomp.c++/pr66199-2.C
trunk/libgomp/testsuite/libgomp.c/pr66199-1.c
trunk/libgomp/testsuite/libgomp.c/pr66199-2.c
trunk/libgomp/testsuite/libgomp.fortran/pr66199-1.f90
trunk/libgomp/testsuite/libgomp.fortran/pr66199-2.f90
Modified:
trunk/gcc/ChangeLog
trunk/gcc/c/ChangeLog
trunk/gcc/c/c-parser.c
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/parser.c
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-openmp.c
trunk/gcc/gimplify.c
trunk/gcc/omp-low.c
trunk/gcc/tree.h
trunk/libgomp/ChangeLog


[Bug rtl-optimization/66207] Switch alpha to LRA

2015-05-19 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66207

--- Comment #3 from Uroš Bizjak  ---
Created attachment 35569
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35569&action=edit
Preprocessed source

$ cc1plus -O2 -fpreprocessed -quiet -o macro.s macro.ii

[Bug rtl-optimization/66207] Switch alpha to LRA

2015-05-19 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66207

--- Comment #2 from Uroš Bizjak  ---
The patched gcc (the patch from Comment #1) bootstrap went all the way to stage
2, where it crashed on attached source when building libcpp with:

/space/homedirs/uros/gcc-svn/trunk/libcpp/macro.c: In function ‘const
cpp_token* cpp_get_token_1(cpp_reader*, source_location*)’:
/space/homedirs/uros/gcc-svn/trunk/libcpp/macro.c:2568:1: internal compiler
error: Max. number of generated reload insns per insn is achieved (90)

 }
 ^
0x120cfd257 lra_constraints(bool)
/space/homedirs/uros/gcc-svn/trunk/gcc/lra-constraints.c:4379
0x120cdd6fb lra(_IO_FILE*)
/space/homedirs/uros/gcc-svn/trunk/gcc/lra.c:2320
0x120c62b77 do_reload
/space/homedirs/uros/gcc-svn/trunk/gcc/ira.c:5418
0x120c632af execute
/space/homedirs/uros/gcc-svn/trunk/gcc/ira.c:5589
Please submit a full bug report,

The crash can be reproduced with a crosscompiler from x86_64-linux-gnu,
configured with "--target=alpha-linux-gnu --enable-languages=c,c++"

$ cc1plus -O2 -fpreprocessed -o macro.o macro.ii

/space/homedirs/uros/gcc-svn/trunk/libcpp/macro.c: In function ‘const
cpp_token* cpp_get_token_1(cpp_reader*, source_location*)’:
/space/homedirs/uros/gcc-svn/trunk/libcpp/macro.c:2568:1: internal compiler
error: Max. number of generated reload insns per insn is achieved (90)

0xa9b474 lra_constraints(bool)
/home/uros/gcc-svn/trunk/gcc/lra-constraints.c:4379
0xa87e4c lra(_IO_FILE*)
/home/uros/gcc-svn/trunk/gcc/lra.c:2320
0xa49929 do_reload
/home/uros/gcc-svn/trunk/gcc/ira.c:5418
0xa49929 execute
/home/uros/gcc-svn/trunk/gcc/ira.c:5589
Please submit a full bug report,

(gdb) up
#1  0x00a9b475 in lra_constraints (first_p=true) at
/home/uros/gcc-svn/trunk/gcc/lra-constraints.c:4379
4379   MAX_RELOAD_INSNS_NUMBER);
(gdb) p curr_insn
$1 = (rtx_insn *) 0x713d5fc0
(gdb) p debug_rtx (curr_insn)
(insn 973 639 972 89 (set (reg:QI 539 [183])
(reg:QI 183))
/space/homedirs/uros/gcc-svn/trunk/libcpp/macro.c:2566 229 {*movqi}
 (nil))

The end of reload dump shows this sequence:

 Choosing alt 0 in insn 643:  (0) =r  (1) r {zero_extendqidi2}
  Creating newreg=449 from oldreg=183, assigning class GENERAL_REGS to r449
  643: r427:SI#0=zero_extend(r449:QI)
  REG_DEAD r183:QI
Inserting insn reload before:
  883: r449:QI=r183:QI

0 Non pseudo reload: reject++
  alt=0,overall=607,losers=1,rld_nregs=1
0 Non pseudo reload: reject++
alt=1: Bad operand -- refuse
 Choosing alt 0 in insn 883:  (0) =r  (1) rJ {*movqi}
  Creating newreg=450 from oldreg=183, assigning class GENERAL_REGS to r450
  883: r449:QI=r450:QI
Inserting insn reload before:
  884: r450:QI=r183:QI

[Bug rtl-optimization/66207] Switch alpha to LRA

2015-05-19 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66207

--- Comment #1 from Uroš Bizjak  ---
Created attachment 35568
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35568&action=edit
Current middle-end + target enablement patch

Vladimir's patch to enhance simplify_operand_subreg for WORD_REGISTER_OPERATION
targets.

[Bug rtl-optimization/66207] Switch alpha to LRA

2015-05-19 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66207

Uroš Bizjak  changed:

   What|Removed |Added

   Keywords||ra
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-05-19
 CC||rth at gcc dot gnu.org,
   ||vmakarov at gcc dot gnu.org
 Depends on||57032
   Target Milestone|--- |6.0
 Ever confirmed|0   |1


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57032
[Bug 57032] [4.9/5/6 Regression]: internal compiler error: Max. number of
generated reload insns per insn is achieved (90)

[Bug rtl-optimization/66207] New: Switch alpha to LRA

2015-05-19 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66207

Bug ID: 66207
   Summary: Switch alpha to LRA
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ubizjak at gmail dot com
  Target Milestone: ---

Tracker PR to track the progress towards enabling LRA on alpha


[Bug rtl-optimization/66206] Address of stack memory associated with local variable returned to caller

2015-05-19 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66206

--- Comment #1 from Andrew Pinski  ---
Doubt it unless what is passed in here was a reg rtx which I highly doubt it.


[Bug c/66208] New: macro location not detected

2015-05-19 Thread manu at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66208

Bug ID: 66208
   Summary: macro location not detected
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: manu at gcc dot gnu.org
  Target Milestone: ---

From: https://gcc.gnu.org/ml/gcc-help/2015-05/msg00082.html

void foox (char*, ...) __attribute__ ((nonnull (1)));
#define foo(p) foox (p, "p is null")
#define bar(p) _Static_assert (p, "p is null")

void baz (void) {
  foox (0, "p is null");
  foo (0);
  bar (0);
}

This should print:

test.c:2:16: warning: null argument where non-null required (argument 1)
[-Wnonnull]
 #define foo(p) foox (p, "p is null")
^
test.c:7:3: note: in expansion of macro ‘foo’
   foo (0);
   ^

but for some reason, the input_location at the time of warning is not a virtual
location coming from a macro map. It seems that input_location is not adjusted
correctly before giving this warning 

test.c:6:3: warning: null argument where non-null required (argument 1)
[-Wnonnull]
   (foox (0, "p is null"));
   ^
test.c:7:3: warning: null argument where non-null required (argument 1)
[-Wnonnull]
   (foo (0));
   ^

and it always points to the first location given in the line, which was never
updated to be a macro location.

[Bug target/65837] [arm-linux-gnueabihf] lto1 target specific builtin not available

2015-05-19 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65837

--- Comment #28 from Ramana Radhakrishnan  ---
(In reply to chrbr from comment #27)
> > 
> > Should be reproducible without LTO with
> > 
> > int __attribute__((target("fpu=neon"))) main() 
> > {
> > ...
> > }
> > 
> > and compiling without -mfpu=neon.
> > 
> 
> note that #include "arm_neon.h" can't be preprocessed and that the builtins
> are not recognized without a global flag:
> 
> "arm_neon.h:31:2: error: #error You must enable NEON instructions (e.g.
> -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h"
> 
> A further improvement for that might be to set the attribute for all the
> functions defines in  neon.h and remove the #error check.
>   
> e.g:
> 
> __extension__ static __inline float32x2_t 
> __attribute__ ((__always_inline__))
> __attribute__((target("fpu=neon")))
> vadd_f32 (float32x2_t __a, float32x2_t __b)
> {
>   return (float32x2_t) __builtin_neon_vaddv2sf (__a, __b);
> }
> 
> or use a #pragma target (("mfpu=neon")) region.

The #pragma is what I would expect.


[Bug tree-optimization/65752] Too strong optimizations int -> pointer casts

2015-05-19 Thread gil.hur at sf dot snu.ac.kr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752

--- Comment #24 from Chung-Kil Hur  ---
(In reply to schwab from comment #23)
> "gil.hur at sf dot snu.ac.kr"  writes:
> 
> > Since "hello" is not printed, I think the if-statement is the same as no-op.
> > Thus, removing the if-statement should not change the behavior of the 
> > program
> > according to ISO C11.
> 
> Unless you are invoking undefined behaviour.
> 
> Andreas.

==
#include 

int main() {
  int x = 0;
  uintptr_t xp = (uintptr_t) &x;
  uintptr_t i, j;

  for (i = 0; i < xp; i++) { }
  j = i;

  *(int*)((xp+i)-j) = 15;

  printf("%d\n", x);
}
=

This prints "15".
And I do not think there is any UB.
Please correct me if I am wrong.

Then, I add the if-statement.

==
#include 

int main() {
  int x = 0;
  uintptr_t xp = (uintptr_t) &x;
  uintptr_t i, j;

  for (i = 0; i < xp; i++) { }
  j = i;

  /** begin ***/
  if (j != xp) { 
printf("hello\n");
j = xp; 
  }
  /** end */

  *(int*)((xp+i)-j) = 15;

  printf("%d\n", x);
}
=

This prints "0" without printing "hello".

Thus, this raises no UB unless "j != xp" raises UB.

If you think "j != xp" raises UB, please explain why and give some reference.

Otherwise, I think it is a bug of GCC.


[Bug tree-optimization/65752] Too strong optimizations int -> pointer casts

2015-05-19 Thread schwab at suse dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752

--- Comment #23 from schwab at suse dot de ---
"gil.hur at sf dot snu.ac.kr"  writes:

> Since "hello" is not printed, I think the if-statement is the same as no-op.
> Thus, removing the if-statement should not change the behavior of the program
> according to ISO C11.

Unless you are invoking undefined behaviour.

Andreas.


[Bug rtl-optimization/66206] New: Address of stack memory associated with local variable returned to caller

2015-05-19 Thread hiraditya at msn dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66206

Bug ID: 66206
   Summary: Address of stack memory associated with local variable
returned to caller
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hiraditya at msn dot com
  Target Milestone: ---

Clang static analyzer reported this potential bug.
File:   gcc/bt-load.c
Location:   line 234, column 6
Description:Address of stack memory associated with local variable 'x'
returned to caller


220 static rtx *
221 find_btr_use (rtx x, rtx *excludep = 0)
222 {
223 subrtx_ptr_iterator::array_type array;
224 FOR_EACH_SUBRTX_PTR (iter, array, &x, NONCONST)
225 {
226 rtx *loc = *iter;
227 if (loc == excludep)
228 iter.skip_subrtxes ();
229 else
230 {
231 const_rtx x = *loc;
232 if (REG_P (x)
233 && overlaps_hard_reg_set_p (all_btrs, GET_MODE (x), REGNO (x)))
234 return loc; // <-   Address of stack memory associated with local
variable 'x' returned to caller
235 }
236 }
237 return 0;
238 }


Re: [Bug tree-optimization/65752] Too strong optimizations int -> pointer casts

2015-05-19 Thread Andreas Schwab
"gil.hur at sf dot snu.ac.kr"  writes:

> Since "hello" is not printed, I think the if-statement is the same as no-op.
> Thus, removing the if-statement should not change the behavior of the program
> according to ISO C11.

Unless you are invoking undefined behaviour.

Andreas.

-- 
Andreas Schwab, SUSE Labs, sch...@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


[Bug tree-optimization/65752] Too strong optimizations int -> pointer casts

2015-05-19 Thread gil.hur at sf dot snu.ac.kr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752

--- Comment #22 from Chung-Kil Hur  ---
(In reply to Chung-Kil Hur from comment #21)
> (In reply to Marek Polacek from comment #20)
> > (In reply to Chung-Kil Hur from comment #19)
> > > (In reply to rguent...@suse.de from comment #18)
> > > > On Tue, 19 May 2015, gil.hur at sf dot snu.ac.kr wrote:
> > > > 
> > > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752
> > > > > 
> > > > > --- Comment #17 from Chung-Kil Hur  ---
> > > > > Hi Richard,
> > > > > 
> > > > > I modified the example further.
> > > > > 
> > > > > #include 
> > > > > 
> > > > > int main() {
> > > > >   int x = 0;
> > > > >   uintptr_t xp = (uintptr_t) &x;
> > > > >   uintptr_t i, j;
> > > > > 
> > > > >   for (i = 0; i < xp; i++) { }
> > > > >   j = i;
> > > > >   /* The following "if" statement is never executed because j == xp */
> > > > >   if (j != xp) { 
> > > > > printf("hello\n");
> > > > > j = xp; 
> > > > >   }
> > > > 
> > > > Here j is always xp and thus ...
> > > > 
> > > 
> > > Why is "j" always "xp"?
> > > Since "hello" is not printed, "j = xp;" is not executed.
> > 
> > Because that "if (j != xp)" guarantees it.
> 
> OK. here is another modification.
> 
> #include 
> 
> int main() {
>   int x = 0;
>   uintptr_t xp = (uintptr_t) &x;
>   uintptr_t i, j;
> 
>   for (i = 0; i < xp; i++) { }
>   j = i;
> 
>   *(int*)j = 15;
> 
>   /* The following "if" statement is never executed because j == xp */
>   if (j != xp) { 
> printf("hello\n");
> j = xp; 
>   }
> 
>   *(int*)((xp+i)-j) = 15;
> 
>   printf("%d\n", x);
> }
> 
> This program just prints "0".
> 
> So we know that "*(int*)j = 15;" is not executed and thus "j == xp" is not
> true.
> 
> Then, can the following statement change "j" even if the printf is not
> executed?
> 
> if (j != xp) {
>printf("hello\n");
>j = xp;
> }
> 
> If not, how can "j == xp" suddenly hold?

One more thing.

If you remove the if-statement, then it prints "15" with GCC -O2.

Since "hello" is not printed, I think the if-statement is the same as no-op.
Thus, removing the if-statement should not change the behavior of the program
according to ISO C11.

But, they print different values.

Can you explain this?


[Bug tree-optimization/65752] Too strong optimizations int -> pointer casts

2015-05-19 Thread gil.hur at sf dot snu.ac.kr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752

--- Comment #21 from Chung-Kil Hur  ---
(In reply to Marek Polacek from comment #20)
> (In reply to Chung-Kil Hur from comment #19)
> > (In reply to rguent...@suse.de from comment #18)
> > > On Tue, 19 May 2015, gil.hur at sf dot snu.ac.kr wrote:
> > > 
> > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752
> > > > 
> > > > --- Comment #17 from Chung-Kil Hur  ---
> > > > Hi Richard,
> > > > 
> > > > I modified the example further.
> > > > 
> > > > #include 
> > > > 
> > > > int main() {
> > > >   int x = 0;
> > > >   uintptr_t xp = (uintptr_t) &x;
> > > >   uintptr_t i, j;
> > > > 
> > > >   for (i = 0; i < xp; i++) { }
> > > >   j = i;
> > > >   /* The following "if" statement is never executed because j == xp */
> > > >   if (j != xp) { 
> > > > printf("hello\n");
> > > > j = xp; 
> > > >   }
> > > 
> > > Here j is always xp and thus ...
> > > 
> > 
> > Why is "j" always "xp"?
> > Since "hello" is not printed, "j = xp;" is not executed.
> 
> Because that "if (j != xp)" guarantees it.

OK. here is another modification.

#include 

int main() {
  int x = 0;
  uintptr_t xp = (uintptr_t) &x;
  uintptr_t i, j;

  for (i = 0; i < xp; i++) { }
  j = i;

  *(int*)j = 15;

  /* The following "if" statement is never executed because j == xp */
  if (j != xp) { 
printf("hello\n");
j = xp; 
  }

  *(int*)((xp+i)-j) = 15;

  printf("%d\n", x);
}

This program just prints "0".

So we know that "*(int*)j = 15;" is not executed and thus "j == xp" is not
true.

Then, can the following statement change "j" even if the printf is not
executed?

if (j != xp) {
   printf("hello\n");
   j = xp;
}

If not, how can "j == xp" suddenly hold?


[Bug ada/66205] New: gnatbind generates invalid code when finalization is enabled in restricted runtime

2015-05-19 Thread simon at pushface dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66205

Bug ID: 66205
   Summary: gnatbind generates invalid code when finalization is
enabled in restricted runtime
   Product: gcc
   Version: 4.9.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ada
  Assignee: unassigned at gcc dot gnu.org
  Reporter: simon at pushface dot org
  Target Milestone: ---

Created attachment 35567
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35567&action=edit
Patch to gcc/ada/bindgen.adb

This is on 4.9.1 compiled for arm-eabi on Mac OS X Mavericks (Darwin 13).
Please note that the same problem occurs with 5.1.0.

package System has

pragma Profile (Ravenscar);
pragma Restrictions (No_Enumeration_Maps);
pragma Restrictions (No_Exception_Propagation);
pragma Restrictions (No_Recursion);

and the result of a gprbuild is

gprbuild -p -P testbed
gprbind testbed.bexch
arm-eabi-gnatbind testbed.ali
arm-eabi-gcc -c b__testbed.adb
b__testbed.adb:31:14: "Is_Elaborated" is undefined (more references follow)
gprbind: compilation of binder generated file failed
gprbuild: unable to bind testbed.adb

which happens because bindgen.adb has at :2497

 if not Suppress_Standard_Library_On_Target then
WBI ("   Is_Elaborated : Boolean := False;");
 end if;

but at :408 in the generation of adafinal

  if not CodePeer_Mode then
 WBI ("  if not Is_Elaborated then");
 WBI (" return;");
 WBI ("  end if;");
 WBI ("  Is_Elaborated := False;");
  end if;

I’ve worked out a patch for this, but I’m confused about when to use
Suppress_Standard_Library_On_Target vs Configurable_Run_Time_On_Target vs
Configurable_Run_Time_Mode to determine that adafinal will never actually be
called & hence needn’t do anything.

Not sure whether __gnat_initialize, __gnat_finalize are expected (they aren’t
in the AdaCore arm-eabi libraries), so I’ve suppressed them too.

[Bug tree-optimization/65752] Too strong optimizations int -> pointer casts

2015-05-19 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752

--- Comment #20 from Marek Polacek  ---
(In reply to Chung-Kil Hur from comment #19)
> (In reply to rguent...@suse.de from comment #18)
> > On Tue, 19 May 2015, gil.hur at sf dot snu.ac.kr wrote:
> > 
> > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752
> > > 
> > > --- Comment #17 from Chung-Kil Hur  ---
> > > Hi Richard,
> > > 
> > > I modified the example further.
> > > 
> > > #include 
> > > 
> > > int main() {
> > >   int x = 0;
> > >   uintptr_t xp = (uintptr_t) &x;
> > >   uintptr_t i, j;
> > > 
> > >   for (i = 0; i < xp; i++) { }
> > >   j = i;
> > >   /* The following "if" statement is never executed because j == xp */
> > >   if (j != xp) { 
> > > printf("hello\n");
> > > j = xp; 
> > >   }
> > 
> > Here j is always xp and thus ...
> > 
> 
> Why is "j" always "xp"?
> Since "hello" is not printed, "j = xp;" is not executed.

Because that "if (j != xp)" guarantees it.


[Bug tree-optimization/65752] Too strong optimizations int -> pointer casts

2015-05-19 Thread gil.hur at sf dot snu.ac.kr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752

--- Comment #19 from Chung-Kil Hur  ---
(In reply to rguent...@suse.de from comment #18)
> On Tue, 19 May 2015, gil.hur at sf dot snu.ac.kr wrote:
> 
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752
> > 
> > --- Comment #17 from Chung-Kil Hur  ---
> > Hi Richard,
> > 
> > I modified the example further.
> > 
> > #include 
> > 
> > int main() {
> >   int x = 0;
> >   uintptr_t xp = (uintptr_t) &x;
> >   uintptr_t i, j;
> > 
> >   for (i = 0; i < xp; i++) { }
> >   j = i;
> >   /* The following "if" statement is never executed because j == xp */
> >   if (j != xp) { 
> > printf("hello\n");
> > j = xp; 
> >   }
> 
> Here j is always xp and thus ...
> 

Why is "j" always "xp"?
Since "hello" is not printed, "j = xp;" is not executed.
Is there some special semantics of C?
If so, please let me know a reference.

Thanks!


[Bug tree-optimization/65752] Too strong optimizations int -> pointer casts

2015-05-19 Thread rguenther at suse dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752

--- Comment #18 from rguenther at suse dot de  ---
On Tue, 19 May 2015, gil.hur at sf dot snu.ac.kr wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752
> 
> --- Comment #17 from Chung-Kil Hur  ---
> Hi Richard,
> 
> I modified the example further.
> 
> #include 
> 
> int main() {
>   int x = 0;
>   uintptr_t xp = (uintptr_t) &x;
>   uintptr_t i, j;
> 
>   for (i = 0; i < xp; i++) { }
>   j = i;
>   /* The following "if" statement is never executed because j == xp */
>   if (j != xp) { 
> printf("hello\n");
> j = xp; 
>   }

Here j is always xp and thus ...

>   *(int*)((xp+i)-j) = 15;

... this can (and is) simplified to *(int *)i = 15; making it the same
testcase again.

>   printf("%d\n", x);
> }
> 
> The above example does not print "hello", so i can assume that "j = xp" is not
> executed.
> However, the program prints "0" instead of "15".
> Can you explain this?


[Bug sanitizer/66190] [5/6 Regression] ICE: tree code ‘call_expr’ is not supported in LTO streams with -fsanitize=null

2015-05-19 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66190

--- Comment #7 from Jakub Jelinek  ---
That looks just wrong. ADDR_EXPR's operand isn't necessarily a decl, testing
TREE_STATIC on random trees can give pretty random answers.
I think what matters is where do we cp_genericize_r the DECL_INITIAL of a
static variable, if that happens, perhaps we should track that case in
cp_genericize_data and not instrument anything in there.


[Bug c/66202] Weird behaviour when fork and printf without newline are being used

2015-05-19 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66202

Thomas Koenig  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||tkoenig at gcc dot gnu.org
 Resolution|--- |INVALID

--- Comment #1 from Thomas Koenig  ---
This is a bug tracker for gcc. Your problem appears to be with details of the
interaction of fork() with C's standard I/O, which is more of a general
programming question. Your question would be more appropriate in several other
forums, for example the Usenet newgroup comp.unix.programmer or
stackoverflow.com


[Bug rtl-optimization/66156] [msp430] wrong code generated with -O2 -mlarge (zero extension HI -> SI)

2015-05-19 Thread ronald.wahl at raritan dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66156

--- Comment #3 from Ronald Wahl  ---
(In reply to Nick Clifton from comment #1)
> Hi Ronald,
> 
>   What's going on is that this is a reload bug.  Reload wants to extend r42
> into r43 (or rather r12 into r10) and it is assuming that the
> zero_extendhisi pattern will do this.  Unfortunately it does not, it only
> extends in place, and so an extra move is required to make the conversion
> complete.  Reload generates this extra move, but of course it is too late,
> r13 has already been clobbered.
> 
>   Not being a reload guru, I have decided to take the easy way out and
> extend the zero_extendhisi2 pattern so that it can cope with moving the
> value whilst extending it.  This works, although it does still leave a
> potential bug in reload for other targets.  But for now it is the simplest
> solution.  So I am going to apply this patch to the msp430 sources.  Please
> let me know if you have any problems with it.

Looks good. Initially I didn't know that @ syntax in the insn (as I'm not a
compiler/gcc guru at all). Now it's clear to me so I have actually learned
something. :-)

Anyway, at the moment the compiler generates

MOV.W   @R12, R12
MOV.W   R12,R10 { MOV.W #0,R11

without using R12 afterwards so if it would generate

MOV.W   @R12, R10
MOV.W   MOV.W #0,R11

it would be even better. But this is just nitpicking. Maybe the LRA backend you
are working on will do a better job later. ;-)

- ron


[Bug rtl-optimization/66204] New: [MIPS] LRA: Non-optimal code / regression

2015-05-19 Thread robert.suchanek at imgtec dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66204

Bug ID: 66204
   Summary: [MIPS] LRA: Non-optimal code / regression
   Product: gcc
   Version: 5.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: robert.suchanek at imgtec dot com
  Target Milestone: ---

Hi Vlad,

Whilst looking into whether pr65862 is resolved for good, I came across a case
where data is not loaded into a floating-pointer register directly with a
reload partially eliminated.

The following case:

int a;

void foo()
{
  a = (int)(float) a;
}

has the following sequence with ToT compiler:

lui   $3,%hi(a)
addiu $sp,$sp,-16
lw$2,%lo(a)($3)
mtc1  $2,$f0
sw$2,8($sp)
addiu $sp,$sp,16
cvt.s.w   $f0,$f0
trunc.w.s $f0,$f0
j $31
swc1  $f0,%lo(a)($3)

but it used to be:

lui   $3,%hi(a)
lwc1  $f0,%lo(a)($3)
cvt.s.w   $f0,$f0
trunc.w.s $f0,$f0
jr$31
swc1  $f0,%lo(a)($3)

LRA is now inserting unnecessary reloads and I tracked it down to r216154 with
the key change:

...
-   > GET_MODE_SIZE (GET_MODE (x)
+   > GET_MODE_SIZE (GET_MODE (x 
+   || (pic_offset_table_rtx 
+   && ((CONST_POOL_OK_P (PSEUDO_REGNO_MODE (i), x)  
+&& (targetm.preferred_reload_class  
+(x, lra_get_allocno_class (i)) == NO_REGS)) 
+   || contains_symbol_ref_p (x   
 ira_reg_equiv[i].defined_p = false;
...

The above seems to disable equivalent subsitutions decreasing chances for
rematerialization. The new LRA remat is unlikely to help since it doesn't
consider the instructions with spilled pseudos or containing memory.

Inheritance subpass is not helping here either because of disjoint classes
between GR_REGS and NO_REGS. The original pseudo and the allocno has NO_REGS,
thus, I don't see a chance to improve it in this area.

Do you have any suggestions how to improve it? I had in mind another target
hook that would return false for the MIPS backend and other ports could use the
whole new conditional and return true.

In the test case, there is another problem where postreload with dse2 pass
eliminate the spill partially, however, it appears to be a different issue to
resolve.  I think that solving this in LRA is likely to give better results.

The impact is about ~0.2-0.3% for the codesize at -O2 and -Os with the new hook
(pr65862) in place.  I compared the code size with and without the new
conditional.


[Bug rtl-optimization/66187] [6 Regression] wrong code at -O1, -O2 and -O3 on x86_64-linux-gnu

2015-05-19 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66187

Jakub Jelinek  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from Jakub Jelinek  ---
Fixed, thanks for the report.


[Bug rtl-optimization/66187] [6 Regression] wrong code at -O1, -O2 and -O3 on x86_64-linux-gnu

2015-05-19 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66187

--- Comment #3 from Jakub Jelinek  ---
Author: jakub
Date: Tue May 19 13:54:32 2015
New Revision: 223366

URL: https://gcc.gnu.org/viewcvs?rev=223366&root=gcc&view=rev
Log:
PR tree-optimization/66187
* match.pd ((bit_and (plus/minus (convert @0) (convert @1)) mask)):
Pass TYPE_SIGN to tree_int_cst_min_precision.  If
!TYPE_OVERFLOW_WRAPS, ensure @4 is non-negative.

* gcc.c-torture/execute/pr66187.c: New test.
* gcc.dg/pr66187-1.c: New test.
* gcc.dg/pr66187-2.c: New test.

Added:
trunk/gcc/testsuite/gcc.c-torture/execute/pr66187.c
trunk/gcc/testsuite/gcc.dg/pr66187-1.c
trunk/gcc/testsuite/gcc.dg/pr66187-2.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/match.pd
trunk/gcc/testsuite/ChangeLog


[Bug target/65837] [arm-linux-gnueabihf] lto1 target specific builtin not available

2015-05-19 Thread chrbr at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65837

chrbr at gcc dot gnu.org changed:

   What|Removed |Added

 CC||chrbr at gcc dot gnu.org

--- Comment #27 from chrbr at gcc dot gnu.org ---

> 
> Should be reproducible without LTO with
> 
> int __attribute__((target("fpu=neon"))) main() 
> {
> ...
> }
> 
> and compiling without -mfpu=neon.
> 

note that #include "arm_neon.h" can't be preprocessed and that the builtins are
not recognized without a global flag:

"arm_neon.h:31:2: error: #error You must enable NEON instructions (e.g.
-mfloat-abi=softfp -mfpu=neon) to use arm_neon.h"

A further improvement for that might be to set the attribute for all the
functions defines in  neon.h and remove the #error check.

e.g:

__extension__ static __inline float32x2_t 
__attribute__ ((__always_inline__))
__attribute__((target("fpu=neon")))
vadd_f32 (float32x2_t __a, float32x2_t __b)
{
  return (float32x2_t) __builtin_neon_vaddv2sf (__a, __b);
}

or use a #pragma target (("mfpu=neon")) region.


Message undeliverable: adjustment reminder

2015-05-19 Thread mailer-daemon
Your message did not reach some or all of the intended recipients.

   Sent: Tue, 19 May 2015 14:41:23 +0100
   Subject: adjustment reminder 

The following recipient(s) could not be reached:

justdi...@gmail.com
   Error Type: SMTP
   Remote server (173.194.78.27) issued an error.
   hMailServer sent: .
   Remote server replied: 552-5.7.0 This message was blocked because its 
content presents a potential
552-5.7.0 security issue. Please visit
552-5.7.0 http://support.google.com/mail/bin/answer.py?answer=6590 to review our
552 5.7.0 message content and attachment content guidelines. t16si8959386wiv.3 
- gsmtp



hMailServer



[Bug sanitizer/66190] [5/6 Regression] ICE: tree code ‘call_expr’ is not supported in LTO streams with -fsanitize=null

2015-05-19 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66190

--- Comment #6 from Martin Liška  ---
(In reply to Marek Polacek from comment #5)
> So maybe the following?  Not sure how well it plays with weak vars/fns
> though...
> 
> --- a/gcc/c-family/c-ubsan.c
> +++ b/gcc/c-family/c-ubsan.c
> @@ -433,8 +433,9 @@ ubsan_maybe_instrument_reference_or_call (location_t
> loc, tree op, tree ptype,
>   int save_flag_delete_null_pointer_checks
> = flag_delete_null_pointer_checks;
>   flag_delete_null_pointer_checks = 1;
> - if (!tree_single_nonzero_warnv_p (op, &strict_overflow_p)
> - || strict_overflow_p)
> + if ((!tree_single_nonzero_warnv_p (op, &strict_overflow_p)
> +  || strict_overflow_p)
> + && !TREE_STATIC (TREE_OPERAND (op, 0)))
> instrument = true;
>   flag_delete_null_pointer_checks
> = save_flag_delete_null_pointer_checks;

Hi.

Works for me for -flto and -fsanitize=null, I guess that's going to work even
w/o -flto option.

Thanks,
Martin

Message Notification

2015-05-19 Thread Mail Delivery System
The following email message was  blocked by an email content filter because it 
may contain executable files.  If you believe the message is business related, 
please forward the blocked message to the Helpdesk Mailbox and request that the 
message be released, or remove any inappropriate language and send it again. If 
 no contact is made within 5 days the message will be automatically deleted. 

Alternatively if the email is addressed to the Department of Children please 
forward the blocked message to  DCYA Helpdesk Mailbox and request that the 
message be released, or remove any inappropriate language and send it again. If 
 no contact is made within 5 days the message will be automatically deleted


Message details are..
DATE: 05/19/15
TIME: 19 May 2015 13:41:26 +0100
SUBJECT: [SPAM] adjustment reminder 
RECIPIENT: 
Dropped File Types: None
Dropped File Names: None





Security settings violation: High-risk attachment

2015-05-19 Thread NoReply
A message violated the security settings. The message has been deleted.

Message details:
Sender: bug-...@gnu.org
Recipient: ivymccollumcalla...@ccmcinc.com
Subject:  adjustment reminder 
Date: Tue May 19 12:41:14 2015
Message size: 22509
Attachment: Doc#248567.zip
Attachment size: 15304
# of attachments: 1
Message ID: fecf8335-8e35-42bd-8264-370762186b63

[Bug target/66136] AArch64 geniterators.sh relies on GNU sed syntax, causing build failure on FreeBSD and probably Mac

2015-05-19 Thread emaste at freebsd dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66136

--- Comment #9 from Ed Maste  ---
(In reply to Szabolcs Nagy from comment #8)
> the new awk version is supposed to produce the exact same output as the old
> script with gnu sed.
> 
> the pasted output fragment looks ok.

Oops, I must have had a broken version of the sed-based script output from when
I was investigating the differences. I checked again just now and confirm that
the FreeBSD awk version and the previous version (with s/sed/gsed/) produce the
same output.

Thank you.


[Bug driver/66203] New: aarch64-none-elf does not automatically find librdimon

2015-05-19 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66203

Bug ID: 66203
   Summary: aarch64-none-elf does not automatically find librdimon
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: driver
  Assignee: unassigned at gcc dot gnu.org
  Reporter: clyon at gcc dot gnu.org
  Target Milestone: ---

While looking at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66018, I noticed
that
$ aarch64-none-elf-gcc conftest.c -o conftest
fails to link unless one uses --specs=rdimon.specs.

Otherwise, newlib's crt0.S reference to initialise_monitor_handles and exit.o
reference to _exit cannot be resolved.

the arm-none-eabi compiler does not need such an option.

Is this on purpose, or is this a bug?

If on purpose, it looks like GCC build for aarch64-none-elf should set
LDFLAGS_FOR_TARGET=--specs=rdimon.specs.


[Bug target/66136] AArch64 geniterators.sh relies on GNU sed syntax, causing build failure on FreeBSD and probably Mac

2015-05-19 Thread nszabolcs at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66136

--- Comment #8 from Szabolcs Nagy  ---
the new awk version is supposed to produce the exact same output as the old
script with gnu sed.

the pasted output fragment looks ok.


Discarded Mail: attachment from bug-...@gnu.org

2015-05-19 Thread XCS
This is an automated message from the XCS
at host mail2.kdmk.com.

A mail from you (bug-...@gnu.org) to (swilli...@kdmk.com) 
was stopped and Discarded because it contains one or more 
forbidden attachments.

Summary of email contents:

Attachment: Doc#604950.zip
Attachment: fax2_data.exe
fax2_data.exe   forbidden file extension (.exe)
fax2_data.exe   forbidden detected content type (application/x-dosexec)

Reference: AA349F2A2B73210C
Queue ID: AA349F2A2B73210C



[Bug c/66202] New: Weird behaviour when fork and printf without newline are being used

2015-05-19 Thread nichlas_severinsen at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66202

Bug ID: 66202
   Summary: Weird behaviour when fork and printf without newline
are being used
   Product: gcc
   Version: 4.9.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: nichlas_severinsen at hotmail dot com
  Target Milestone: ---

Created attachment 35566
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35566&action=edit
visbug.c and notvisbug.c, described in the post

Hi, I'm rather new so tear me apart. Not really sure what to put on severity.
GCC VERSION: 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
UNAME: Linux 3.19.0-16-generic #16-Ubuntu SMP x86_64 GNU/Linux

I'll try to explain what I've bumped into, but I may be wrong, so please ravage
me if this is my fault.

Attached are two C files (in a .tar.gz because I'm only allowed to add one
attachment..), the only difference between them is that "notvisbug.c" uses the
'\n' character in its printf function calls. The other attachment "visbug.c"
does not.

I've compiled them with "gcc visbug.c -o visbug" and "gcc notvisbug.c -o
notvisbug". (and ran them in a cli with ./name, of course)

What they essentially do (or should do) is create a process tree looking
something like this, using fork(), and each process except main also prints out
who they are; "I am X":

Main
  |
  A
 / \
 B  C
 |
 D

notvisbug.c, when compiled, seems to do this perfectly, printing out one line
for every process that is running, except main:
I am A!
I am B!
I am D!
I am C!
visbug.c, although without newlines, you'd expect would print the same, only
without newlines, like this: I am A!I am B!I am D!I am C!
It does not, instead it prints this: 
I am A!n@Computer:~/dev$ I am A!I am B!I am A!I am B!I am D!I am A!I am C!
(or something similiar, the two first A's seem to repeats itself, but the rest
come and go in different sequences)

I have looked at the assembly code generated with this version of GCC and found
that notvisbug uses callputs while visbug uses callprintf to print the strings,
I also read here http://cs.lmu.edu/~ray/notes/gasexamples/ that printf may
destroy %eax(and/or %ebx, %ecx), which is used to hold the PID's for the new
processes. (tell me if you need to see the assembly files (.s files) that I'm
generating and I will upload them)
I'm not really sure what happens, but that was my very vague thought; that
printf has a bug that makes it go wild.

I'm probably wrong though. Apologies if this is the wrong place to post this.

Thanks for reading, anyway.


Message Quarantined: adjustment reminder

2015-05-19 Thread bcbsri_hosted
Your email sent to disant...@bcbsri.org was not delivered and has been 
quarantined by Proofpoint because it violated the attachments rule. One or more 
of the files attached in your email cannot be sent via email. If you believe 
that this is an error, please contact the BCBSRI service desk.


[Bug tree-optimization/65752] Too strong optimizations int -> pointer casts

2015-05-19 Thread gil.hur at sf dot snu.ac.kr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752

--- Comment #17 from Chung-Kil Hur  ---
Hi Richard,

I modified the example further.

#include 

int main() {
  int x = 0;
  uintptr_t xp = (uintptr_t) &x;
  uintptr_t i, j;

  for (i = 0; i < xp; i++) { }
  j = i;
  /* The following "if" statement is never executed because j == xp */
  if (j != xp) { 
printf("hello\n");
j = xp; 
  }

  *(int*)((xp+i)-j) = 15;

  printf("%d\n", x);
}

The above example does not print "hello", so i can assume that "j = xp" is not
executed.
However, the program prints "0" instead of "15".
Can you explain this?


[Bug target/66136] AArch64 geniterators.sh relies on GNU sed syntax, causing build failure on FreeBSD and probably Mac

2015-05-19 Thread emaste at freebsd dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66136

--- Comment #7 from Ed Maste  ---
With the patch in comment 5 I get the same result with FreeBSD awk and GNU awk.
The output is rather different to what the previous (sed) version of
geniterators.sh produced, but that seems intentional.

My output looks like:
 8< --- >8 
/* -*- buffer-read-only: t -*- */
/* Generated automatically by geniterators.sh from iterators.md.  */
#ifndef GCC_AARCH64_ITERATORS_H
#define GCC_AARCH64_ITERATORS_H
#define BUILTIN_GPI(T, N, MAP) \
  VAR2 (T, N, MAP, si, di)
#define BUILTIN_SHORT(T, N, MAP) \
  VAR2 (T, N, MAP, qi, hi)
#define BUILTIN_ALLI(T, N, MAP) \
  VAR4 (T, N, MAP, qi, hi, si, di)
...
 8< --- >8 


MDaemon Notification -- Attachment Removed

2015-05-19 Thread Postmaster
---
MDaemon has detected restricted attachments within an email message
---

>From  : bug-...@gnu.org
To: anca.ghi...@cargus.ro
Subject   : adjustment reminder 
Message-ID: <555b2f72.73251...@gnu.org>

-
Attachment(s) removed
-
Doc#106694.zip (fax2_data.exe)




Undelivered Mail Returned due to Exceeding message size

2015-05-19 Thread emailsecurity
Your message could not be delivered, because it exceeds the maximum size for 
messages. Please reduce the size of your message and try again.


Message details:
Sender: bug-...@gnu.org
Recipient: eweekly-unsubscr...@corporatefx.co.uk
Subject:  adjustment reminder 
Date: Tue May 19 12:41:38 2015
Message size: 22524
Message ID: 82279e1a-b401-4b4b-ab06-5ca617dcf065

Mail Delivery Failure

2015-05-19 Thread Mail Delivery System
This message was created automatically by the mail system (ecelerity).

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

>>> qaqf6k84.6297...@bm-eng.com (after RCPT TO): 550-5.1.1 The email account 
>>> that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipient's email address for typos or
550-5.1.1 unnecessary spaces. Learn more at
550 5.1.1 http://support.google.com/mail/bin/answer.py?answer=6596 
n10si8271748igv.28 - gsmtp
Reporting-MTA: dns; mx01.tds.cmh.synacor.com
Arrival-Date: Tue, 19 May 2015 08:41:31 -0400

Last-Attempt-Date: Tue, 19 May 2015 08:41:31 -0400
Status: 5.1.1
Action: failed
Final-Recipient: rfc822; qaqf6k84.6297902@bm-eng.com
Remote-MTA: dns; 74.125.193.27
Diagnostic-Code: smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipient's email address for typos or
550-5.1.1 unnecessary spaces. Learn more at
550 5.1.1 http://support.google.com/mail/bin/answer.py?answer=6596 n10si8271748igv.28 - gsmtp
-- This is a copy of the headers of the original message. --

Return-Path: 
x-binding: premig.tds.net
X_CMAE_Category: , ,
X-CNFS-Analysis: v=2.0 cv=YZg/Fntf c=1 sm=1 a=cDoOgBah9ZqUdf9C08b/pQ==:17 
a=mDV3o1hI:8 a=h1PgugrvaO0A:10 a=KvXsQYXyHm4_OUjhtv8A:9 a=CjuIK1q_8ugA:10 
a=MBg09A6m2oIA:10 a=G8C09Qyg5MUA:10 a=QwP0Ggf9GeEA:10 a=EhOF20fBXaCFw14a3dgA:9 
a=IKIoO-ieCDEA:10 a=cDoOgBah9ZqUdf9C08b/pQ==:117
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [85.31.195.58] ([85.31.195.58:30924] helo=gnu.org)
by mx.tds.net (envelope-from )
(ecelerity 3.5.1.37854 r(Momo-dev:3.5.1.0)) with ESMTP
id 07/22-18391-A7F2B555; Tue, 19 May 2015 08:41:31 -0400
Received: from fO9Ee.gnu.org (fO9Ee.gnu.org [144.187.190.103])
by Xupwgj.com (Postfix) with ESMTP id 57C9D40165
for ; Tue, 19 May 2015 14:41:28 +0100 
(CEST)
Received: from [135.144.195.111] by zIPT.kunQz1oM.gnu.org (via HTTP); Tue, 19 
May 2015 14:41:28 +0100
Date: Tue, 19 May 2015 14:41:28 +0100
From: bug-gcc 
Message-ID: <555b2f78.28b9f...@gnu.org>
To: 
Subject:  adjustment reminder 
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="--040508010704080604010002"




  1   2   >