[Bug tree-optimization/66449] [6 Regression] ICE: in build2_stat, at tree.c:4376 with -O3

2015-06-07 Thread dimhen at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66449

--- Comment #1 from Dmitry G. Dyachenko dimhen at gmail dot com ---
start FAIL for me : r224020

configure as
$ ~/src/gcc_r224020/configure --prefix=/usr/local/gcc_current --enable-static
--enable-checking=release --enable-languages=c,c++,lto --enable-plugin
--disable-libstdcxx-dual-abi --disable-multilib
$ make
[build fail, fixed in r224030]

check as
$ /home/dimhen/build/gcc_r224020/./prev-gcc/xgcc
-B/home/dimhen/build/gcc_r224020/./prev-gcc/
-B/usr/local/gcc_current/x86_64-unknown-linux-gnu/bin/ -fpreprocessed -Werror
-Wall -O3 -c x.i
x.i: In function ‘fn1’:
x.i:1:7: internal compiler error: in build2_stat, at tree.c:4381
 void *fn1(void *p1, void *p2, long p3) {
   ^
0xfb436b build2_stat(tree_code, tree_node*, tree_node*, tree_node*)
/home/dimhen/src/gcc_r224020/gcc/tree.c:4380
0x9afcef build2_stat_loc
/home/dimhen/src/gcc_r224020/gcc/tree.h:3702
0x9da548 fold_build2_stat_loc(unsigned int, tree_code, tree_node*, tree_node*,
tree_node*)
/home/dimhen/src/gcc_r224020/gcc/fold-const.c:14286
0xe992d3 loop_exits_before_overflow
/home/dimhen/src/gcc_r224020/gcc/tree-ssa-loop-niter.c:3905
0xe99711 scev_probably_wraps_p(tree_node*, tree_node*, gimple_statement_base*,
loop*, bool)
/home/dimhen/src/gcc_r224020/gcc/tree-ssa-loop-niter.c:4036
0x14c96e1 convert_affine_scev(loop*, tree_node*, tree_node**, tree_node**,
gimple_statement_base*, bool)
/home/dimhen/src/gcc_r224020/gcc/tree-chrec.c:1279
0x14c9832 chrec_convert_1
/home/dimhen/src/gcc_r224020/gcc/tree-chrec.c:1334
0x14c9b3c chrec_convert(tree_node*, tree_node*, gimple_statement_base*, bool)
/home/dimhen/src/gcc_r224020/gcc/tree-chrec.c:1423
0xe0d3e6 interpret_rhs_expr
/home/dimhen/src/gcc_r224020/gcc/tree-scalar-evolution.c:1893
0xe0d52a interpret_gimple_assign
/home/dimhen/src/gcc_r224020/gcc/tree-scalar-evolution.c:1935
0xe0d793 analyze_scalar_evolution_1
/home/dimhen/src/gcc_r224020/gcc/tree-scalar-evolution.c:2017
0xe0d94b analyze_scalar_evolution(loop*, tree_node*)
/home/dimhen/src/gcc_r224020/gcc/tree-scalar-evolution.c:2072
0xe0da08 analyze_scalar_evolution_in_loop
/home/dimhen/src/gcc_r224020/gcc/tree-scalar-evolution.c:2168
0xe0f848 simple_iv(loop*, loop*, tree_node*, affine_iv*, bool)
/home/dimhen/src/gcc_r224020/gcc/tree-scalar-evolution.c:3276
0x14cd658 dr_analyze_innermost(data_reference*, loop*)
/home/dimhen/src/gcc_r224020/gcc/tree-data-ref.c:834
0x14ce1e7 create_data_ref(loop*, loop*, tree_node*, gimple_statement_base*,
bool)
/home/dimhen/src/gcc_r224020/gcc/tree-data-ref.c:1105
0x14d6180 find_data_references_in_stmt(loop*, gimple_statement_base*,
vecdata_reference*, va_heap, vl_ptr*)
/home/dimhen/src/gcc_r224020/gcc/tree-data-ref.c:4537
0x14d635b find_data_references_in_bb(loop*, basic_block_def*,
vecdata_reference*, va_heap, vl_ptr*)
/home/dimhen/src/gcc_r224020/gcc/tree-data-ref.c:4590
0x14d640c find_data_references_in_loop(loop*, vecdata_reference*, va_heap,
vl_ptr*)
/home/dimhen/src/gcc_r224020/gcc/tree-data-ref.c:4623
0x14d656b compute_data_dependences_for_loop(loop*, bool, vecloop*, va_heap,
vl_ptr*, vecdata_reference*, va_heap, vl_ptr*,
vecdata_dependence_relation*, va_heap, vl_ptr*)
/home/dimhen/src/gcc_r224020/gcc/tree-data-ref.c:4699
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.

[Bug c++/66451] New: Array not fully destructed if element destructor throws exception

2015-06-07 Thread jonathandodd at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66451

Bug ID: 66451
   Summary: Array not fully destructed if element destructor
throws exception
   Product: gcc
   Version: 4.9.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jonathandodd at gmail dot com
  Target Milestone: ---

If an array element throws during destruction, undestructed elements in that
array are not destructed. Other local variables are destructed. Clang calls
destructors on all automatic objects, regardless whether in or out of an array.

(And yes, I know throwing from destructors should be avoided, but that's hardly
the point ;p)

Relevant sections from standard
---

s15.2:

As control passes from the point where an exception is thrown to a handler,
destructors are invoked for all automatic objects constructed since the try
block was entered. ...

An object of any storage duration whose initialization or destruction is
terminated by an exception will have destructors executed for all of its fully
constructed subobjects

s1.8:

A subobject can be ... an array element.


Test case
-
#include iostream
#include exception

using namespace std;

class A {
public:
  A(int new_a) : a(new_a) { }

  ~A() noexcept(false) {
cout  a  a .~A() ;

if(std::uncaught_exception())
  cout  Unwinding;

cout  endl;

if(a==4)
  throw a;
  } 

  int a;
};

int main()
{
  try {
A a1(1), a2(2);
A arr[] = {3,4,5};

  } catch(...) { }
}

Output (g++ 4.9.2)
--

a5.~A() 
a4.~A() 
a2.~A() Unwinding
a1.~A() Unwinding


Output (clang 3.5.0)

a5.~A() 
a4.~A() 
a3.~A() Unwinding
a2.~A() Unwinding
a1.~A() Unwinding


[Bug sanitizer/66452] New: [6 Regression] [UBSAN] *.Lubsan_data0' defined but not used

2015-06-07 Thread dimhen at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66452

Bug ID: 66452
   Summary: [6 Regression] [UBSAN] *.Lubsan_data0' defined but not
used
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: sanitizer
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dimhen at gmail dot com
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org
  Target Milestone: ---

r224060 PASS
r224193 FAIL

$ g++ -Wall -O0 -fsanitize=undefined -c x.ii -fpreprocessed -o x.o
x.ii: In member function 'A B::m_fn1() const':
x.ii:9:12: warning: unused variable 'i' [-Wunused-variable]
   for (int i;;)
^
At global scope:
cc1plus: warning: '*.Lubsan_data0' defined but not used [-Wunused-variable]

$ cat x.ii
class A {
public:
  A(int);
};
class B {
  A m_fn1() const;
};
A B::m_fn1() const {
  for (int i;;)
;
  return 0;
}

$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/gcc_current/libexec/gcc/x86_64-unknown-linux-gnu/6.0.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: /home/dimhen/src/gcc_current/configure
--prefix=/usr/local/gcc_current --enable-static
--enable-checking=yes,df,fold,rtl --enable-languages=c,c++,lto --enable-plugin
--disable-libstdcxx-dual-abi --disable-multilib
Thread model: posix
gcc version 6.0.0 20150606 (experimental) [trunk revision 224193] (GCC)

$ ~/bin/gcc_224060_rls/bin/g++ -v
Using built-in specs.
COLLECT_GCC=/home/dimhen/bin/gcc_224060_rls/bin/g++
COLLECT_LTO_WRAPPER=/home/dimhen/bin/gcc_224060_rls/bin/../libexec/gcc/x86_64-unknown-linux-gnu/6.0.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: /home/dimhen/src/gcc_r224060/configure
--prefix=/usr/local/gcc_current --enable-static --enable-checking=release
--enable-languages=c,c++,lto --enable-plugin --disable-libstdcxx-dual-abi
--disable-multilib
Thread model: posix
gcc version 6.0.0 20150603 (experimental) [trunk revision 224060] (GCC)


[Bug bootstrap/66448] [6 Regression] Bootstrap fails on darwin after r224161

2015-06-07 Thread aldyh at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66448

Aldy Hernandez aldyh at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jason at gcc dot gnu.org

--- Comment #2 from Aldy Hernandez aldyh at gcc dot gnu.org ---

 2. Once (1) is fixed, bootstrap then fails with:
 
 /GCC/gcc-trunk/gcc/ipa-pure-const.c:1640:1: error:
 ‘{anonymous}::pass_ipa_pure_const::pass_ipa_pure_const(gcc::context*)’
 defined but not used [-Werror=unused-function]
  pass_ipa_pure_const::
 
 A --disable-werror boostrap completes, but there are a number of
 constructors and destructors that report declared but not used. AFAICT,
 it's only constructors/destructors.
 
 This is occurring at stage #2, and I thought maybe that the stage#1 compiler
 could have been mis-compiled by the bootstrap; however, gcc-4.9, 5.1 and
 clang (xcode 5.1.1) bootstraps all give the same result.

Jason, is pass_ipa_pure_const::pass_ipa_pure_const() really declared but not
used?

If so, can we mark it ATTRIBUTE_UNSUED or is there a more generic way of fixing
this?

[Bug tree-optimization/66442] [6 regression] FAIL: gcc.dg/autopar/pr46885.c (test for excess errors)

2015-06-07 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66442

--- Comment #3 from vries at gcc dot gnu.org ---
(In reply to vries from comment #2)
 Created attachment 35711 [details]
 tentative patch

Bootstrap and reg-test on x86_64 succeeded.


[Bug bootstrap/66448] [6 Regression] Bootstrap fails on darwin after r224161

2015-06-07 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66448

--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org ---
(In reply to Aldy Hernandez from comment #2)
  2. Once (1) is fixed, bootstrap then fails with:
  
  /GCC/gcc-trunk/gcc/ipa-pure-const.c:1640:1: error:
  ‘{anonymous}::pass_ipa_pure_const::pass_ipa_pure_const(gcc::context*)’
  defined but not used [-Werror=unused-function]
   pass_ipa_pure_const::
  
  A --disable-werror boostrap completes, but there are a number of
  constructors and destructors that report declared but not used. AFAICT,
  it's only constructors/destructors.
  
  This is occurring at stage #2, and I thought maybe that the stage#1 compiler
  could have been mis-compiled by the bootstrap; however, gcc-4.9, 5.1 and
  clang (xcode 5.1.1) bootstraps all give the same result.
 
 Jason, is pass_ipa_pure_const::pass_ipa_pure_const() really declared but not
 used?

I bet a drink that it is an incharge vs outofcharge construct/deconstruct
issue. Darwin does not support aliases so the function itself is cloned. 


 
 If so, can we mark it ATTRIBUTE_UNSUED or is there a more generic way of
 fixing this?

[Bug tree-optimization/66442] [6 regression] FAIL: gcc.dg/autopar/pr46885.c (test for excess errors)

2015-06-07 Thread sch...@linux-m68k.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66442

--- Comment #4 from Andreas Schwab sch...@linux-m68k.org ---
Fixes the test case on m68k.


[Bug tree-optimization/66449] New: [6 Regression] ICE: in build2_stat, at tree.c:4376 with -O3

2015-06-07 Thread dimhen at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66449

Bug ID: 66449
   Summary: [6 Regression] ICE: in build2_stat, at tree.c:4376
with -O3
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dimhen at gmail dot com
  Target Milestone: ---

r223920 PASS
r224193 FAIL

gcc -fpreprocessed -Werror -Wall -O2 -c x.i PASS
gcc -fpreprocessed -Werror -Wall -O3 -c x.i FAIL

$ cat x.i
void *fn1(void *p1, void *p2, long p3) {
  long a = (long)p1, b = (long)p2, c = p3;
  while (c) {
int d = ((int *)b)[0];
c--;
((char *)a)[0] = d;
a++;
  }
  return 0;
}


$ /usr/local/gcc_current/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/usr/local/gcc_current/bin/gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc_current/libexec/gcc/x86_64-unknown-linux-gnu/6.0.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: /home/dimhen/src/gcc_current/configure
--prefix=/usr/local/gcc_current --enable-static
--enable-checking=yes,df,fold,rtl --enable-languages=c,c++,lto --enable-plugin
--disable-libstdcxx-dual-abi --disable-multilib
Thread model: posix
gcc version 6.0.0 20150606 (experimental) [trunk revision 224193] (GCC)



$ /usr/local/gcc_current/bin/gcc -fpreprocessed -Werror -Wall -O3 -c x.i
x.i: In function ‘fn1’:
x.i:1:7: internal compiler error: in build2_stat, at tree.c:4376
 void *fn1(void *p1, void *p2, long p3) {
   ^
0xe180cd build2_stat(tree_code, tree_node*, tree_node*, tree_node*)
/home/dimhen/src/gcc_current/gcc/tree.c:4375
0x862c78 build2_stat_loc
/home/dimhen/src/gcc_current/gcc/tree.h:3702
0x862c78 fold_build2_stat_loc(unsigned int, tree_code, tree_node*, tree_node*,
tree_node*)
/home/dimhen/src/gcc_current/gcc/fold-const.c:14281
0xd05015 loop_exits_before_overflow
/home/dimhen/src/gcc_current/gcc/tree-ssa-loop-niter.c:3900
0xd05015 scev_probably_wraps_p(tree_node*, tree_node*, gimple_statement_base*,
loop*, bool)
/home/dimhen/src/gcc_current/gcc/tree-ssa-loop-niter.c:4031
0x13d3108 convert_affine_scev(loop*, tree_node*, tree_node**, tree_node**,
gimple_statement_base*, bool)
/home/dimhen/src/gcc_current/gcc/tree-chrec.c:1275
0x13d3510 chrec_convert_1
/home/dimhen/src/gcc_current/gcc/tree-chrec.c:1330
0xc7e6c8 interpret_rhs_expr
/home/dimhen/src/gcc_current/gcc/tree-scalar-evolution.c:1886
0xc7acca interpret_gimple_assign
/home/dimhen/src/gcc_current/gcc/tree-scalar-evolution.c:1928
0xc7acca analyze_scalar_evolution_1
/home/dimhen/src/gcc_current/gcc/tree-scalar-evolution.c:2010
0xc7b737 analyze_scalar_evolution(loop*, tree_node*)
/home/dimhen/src/gcc_current/gcc/tree-scalar-evolution.c:2065
0xc7f12a analyze_scalar_evolution_in_loop
/home/dimhen/src/gcc_current/gcc/tree-scalar-evolution.c:2161
0xc7f26f simple_iv(loop*, loop*, tree_node*, affine_iv*, bool)
/home/dimhen/src/gcc_current/gcc/tree-scalar-evolution.c:3269
0x13dc669 dr_analyze_innermost(data_reference*, loop*)
/home/dimhen/src/gcc_current/gcc/tree-data-ref.c:829
0x13e1742 create_data_ref(loop*, loop*, tree_node*, gimple_statement_base*,
bool)
/home/dimhen/src/gcc_current/gcc/tree-data-ref.c:1100
0x13e261c find_data_references_in_stmt(loop*, gimple_statement_base*,
vecdata_reference*, va_heap, vl_ptr*)
/home/dimhen/src/gcc_current/gcc/tree-data-ref.c:4532
0x13e27ea find_data_references_in_bb(loop*, basic_block_def*,
vecdata_reference*, va_heap, vl_ptr*)
/home/dimhen/src/gcc_current/gcc/tree-data-ref.c:4585
0x13e2a10 find_data_references_in_loop(loop*, vecdata_reference*, va_heap,
vl_ptr*)
/home/dimhen/src/gcc_current/gcc/tree-data-ref.c:4618
0x13e3b4a compute_data_dependences_for_loop(loop*, bool, vecloop*, va_heap,
vl_ptr*, vecdata_reference*, va_heap, vl_ptr*,
vecdata_dependence_relation*, va_heap, vl_ptr*)
/home/dimhen/src/gcc_current/gcc/tree-data-ref.c:4694
0xc65565 tree_predictive_commoning_loop
/home/dimhen/src/gcc_current/gcc/tree-predcom.c:2486
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.

[Bug target/66258] compiling a stdarg function with arch +nofp generates an ICE

2015-06-07 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66258

--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org ---
Whomever approved the patch for the trunk can also approve the backport.


[Bug c++/66450] New: [5 Regression][C++11][constexpr] Issues when delegating implicit copy constructor in constexpr function

2015-06-07 Thread mosra at centrum dot cz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66450

Bug ID: 66450
   Summary: [5 Regression][C++11][constexpr] Issues when
delegating implicit copy constructor in constexpr
function
   Product: gcc
   Version: 5.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mosra at centrum dot cz
  Target Milestone: ---

The following code is compiled fine in both GCC 4.9.2 and Clang 3.6:

struct foo {
constexpr foo(int a);

constexpr foo(int a, int b, int c): a{a}, b{b}, c{c} {}

int a, b, c;
};

constexpr foo make_foo(int a) { return foo{a, a+1, a+2}; }

constexpr foo::foo(int a): foo{make_foo(a)} {}

int main() {
constexpr const foo f{3};
static_assert(f.a == 3, );
static_assert(f.b == 4, );
static_assert(f.c == 5, );
}

In GCC 5.1 it produces an error about non-constant condition for static
assertion. If the relevant lines are changed to runtime assert (and #include
cassert added):

assert(f.a == 3);
assert(f.b == 4);
assert(f.c == 5);

Then all three assertions fail at runtime, because the copy constructor is
somehow not called and the structure is instead just zeroed out. HOWEVER, if
you remove all occurrences of the constexpr keyword, the code compiles, no
runtime assertion is fired and everything behaves as expected.

The behavior is the same for -std=c++11 and -std=c++14.

I think the static assertion error and the zero-initialization are somehow
related, so I put these into single issue instead of creating two separate
ones.


[Bug c/66454] Common -Wmisleading-indentation false-positive triggered in the Linux kernel

2015-06-07 Thread patrick at parcs dot ath.cx
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66454

--- Comment #2 from patrick at parcs dot ath.cx ---
Created attachment 35712
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35712action=edit
rough patch

Here is a rough patch of the aforementioned change -- to look at the column of
the first non-whitespace character on the line of the guard token, instead of
looking at the column of the guard token itself.  The patch eliminates all of
the -Wmisleading-indentation false positives from the Linux kernel build, and
all of the false positives from the sqlite build.


[Bug rtl-optimization/66444] [5/6 Regression] Miscompilation of Xen since r211078

2015-06-07 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66444

vries at gcc dot gnu.org changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |vries at gcc dot gnu.org

--- Comment #1 from vries at gcc dot gnu.org ---
Tentative patch:
...
diff --git a/gcc/postreload.c b/gcc/postreload.c
index 7ecca15..1cc7b14 100644
--- a/gcc/postreload.c
+++ b/gcc/postreload.c
@@ -1352,9 +1352,12 @@ reload_combine (void)
   if (CALL_P (insn))
{
  rtx link;
+ HARD_REG_SET used_regs;
+
+ get_call_reg_set_usage (insn, used_regs, call_used_reg_set);

  for (r = 0; r  FIRST_PSEUDO_REGISTER; r++)
-   if (call_used_regs[r])
+   if (TEST_HARD_REG_BIT (used_regs, r))
  {
reg_state[r].use_index = RELOAD_COMBINE_MAX_USES;
reg_state[r].store_ruid = reload_combine_ruid;
...

Output with patch:
...
movabsq $962072674304, %r8
salq$5, %rax
addq%rax, %r8
movq%r8, %rdi
callfn1
movq%r8, %rdi
callfn2
...


[Bug c++/66421] G++ fails compilation when assigning tuple created with variadic template to auto variable

2015-06-07 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66421

Nathan Sidwell nathan at gcc dot gnu.org changed:

   What|Removed |Added

 CC||nathan at gcc dot gnu.org

--- Comment #2 from Nathan Sidwell nathan at gcc dot gnu.org ---
Appears resolved in version r224163


[Bug rtl-optimization/66444] [5/6 Regression] Miscompilation of Xen since r211078

2015-06-07 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66444

--- Comment #2 from vries at gcc dot gnu.org ---
Looks like reload_cse_move2add could use a similar fix.


[Bug c++/52960] Missing warnings on ambiguous source : function decl vs local var decl

2015-06-07 Thread jan.kratochvil at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52960

Jan Kratochvil jan.kratochvil at redhat dot com changed:

   What|Removed |Added

 CC||dodji at gcc dot gnu.org,
   ||jan.kratochvil at redhat dot 
com

--- Comment #2 from Jan Kratochvil jan.kratochvil at redhat dot com ---
Missing keyword: diagnostic
Valid for:
g++ (GCC) 6.0.0 20150530 (experimental)
clang-3.6.0-2.fc23.x86_64


[Bug tree-optimization/66442] [6 regression] FAIL: gcc.dg/autopar/pr46885.c (test for excess errors)

2015-06-07 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66442

--- Comment #2 from vries at gcc dot gnu.org ---
Created attachment 35711
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35711action=edit
tentative patch


[Bug ipa/66271] -Os generates incorrect code on ARM possibly due to IPA

2015-06-07 Thread wilson at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66271

Jim Wilson wilson at gcc dot gnu.org changed:

   What|Removed |Added

 CC||wilson at gcc dot gnu.org

--- Comment #6 from Jim Wilson wilson at gcc dot gnu.org ---
This appears to be the same problem as 65932.


[Bug c++/66443] Virtual inheritance vs. non-default constructors

2015-06-07 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66443

Nathan Sidwell nathan at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2015-06-08
 CC||nathan at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |nathan at gcc dot 
gnu.org
 Ever confirmed|0   |1


[Bug libitm/66453] New: In a deadlock libitm allocates all available RAM until oom is called

2015-06-07 Thread gallir at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66453

Bug ID: 66453
   Summary: In a deadlock libitm allocates all available RAM until
oom is called
   Product: gcc
   Version: 4.9.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libitm
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gallir at gmail dot com
  Target Milestone: ---

The following transaction block make libitm to allocate all available memory in
few seconds:

int counter[ARRAY_SIZE];

void *count(void *ptr) {
long i, max = MAX_COUNT/NUM_THREADS;
int tid = ((struct tdata *) ptr)-tid;

__transaction_atomic {
while (!counter[tid]);
counter[(tid + 1) % NUM_THREADS] = 1;
}
return;

}

Full code with 2 threads: https://gist.github.com/gallir/5df222892b1f633c8275
(tested and reproduced in a Intel i5)


The example is awfully buggy, generates an obvious -binary barrier- deadlock,
but libitm could limit the amount of allocations to prevent that this type of
mistakes brings the server down (the number of allocations is a good hint of a
deadlock, isn't it?)


[Bug c/66454] New: Common -Wmisleading-indentation false-positive triggered in the Linux kernel

2015-06-07 Thread patrick at parcs dot ath.cx
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66454

Bug ID: 66454
   Summary: Common -Wmisleading-indentation false-positive
triggered in the Linux kernel
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: patrick at parcs dot ath.cx
  Target Milestone: ---

The following test case is a template exhibiting the kind of code in the Linux
kernel that often triggers a -Wmisleading-indentation false-positive:

  int *p;

  void
  foo (int n)
  {
  if (p) {
foo (1);
  } else
  if (p)
foo (2);
  foo (3);
  }

indentation.c: In function ‘foo’:
indentation.c:13:5: warning: statement is indented as if it were guarded by...
[-Wmisleading-indentation]
 foo (3);
 ^
indentation.c:10:7: note: ...this ‘else’ clause, but it is not
 } else
   ^

[Bug c/66454] Common -Wmisleading-indentation false-positive triggered in the Linux kernel

2015-06-07 Thread patrick at parcs dot ath.cx
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66454

--- Comment #1 from patrick at parcs dot ath.cx ---
We suppress the warning for

  int *p;

  void
  foo (int n)
  {
  if (p)
foo (1);
  else   // guard token
  if (p) // body token
foo (2);
  foo (3);  // next token
  }

because we notice that the guard, body and next tokens are all on the same
column.  But the closing brace in front of the else in the original test case
makes that condition no longer hold as the column of the guard token gets
shifted.

To fix this (and similar false positives), I think we should take into account
the first non-whitespace character on the guard line. If the column of that
character lines up with the columns of the body and next tokens, then we should
suppress the warning, too.  In the original test case the first nonwhitespace
character on the guard line is }, and indeed the columns line up.  So the
warning would be suppressed.


We also have to worry about the following false negative:

  int *p;

  void
  foo (int n)
  {
  if (p) {
foo (1);
  } else  // guard
if (p)  // body
  foo (2);
foo (3); // next
  }

Here the guard, body and next columns line up, thus suppressing the warning --
but of course we would like to warn about foo (3); here.  So maybe we
shouldn't take into account the column of the guard character at all, but
rather always take into account the column of the first non-whitespace
character on the line of the guard token?


[Bug bootstrap/66448] [6 Regression] Bootstrap fails on darwin after r224161

2015-06-07 Thread iains at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66448

Iain Sandoe iains at gcc dot gnu.org changed:

   What|Removed |Added

 Target|x86_64-apple-darwin14   |*-apple-darwin*
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-06-07
   Host|x86_64-apple-darwin14   |*-apple-darwin*
 Ever confirmed|0   |1
  Build|x86_64-apple-darwin14   |*-apple-darwin*


[Bug bootstrap/66448] New: [6 Regression] Bootstrap fails on darwin after r224161

2015-06-07 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66448

Bug ID: 66448
   Summary: [6 Regression] Bootstrap fails on darwin after r224161
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dominiq at lps dot ens.fr
CC: aldyh at gcc dot gnu.org, iains at gcc dot gnu.org
  Target Milestone: ---
  Host: x86_64-apple-darwin14
Target: x86_64-apple-darwin14
 Build: x86_64-apple-darwin14

Bootstrap fails on darwin after r224161

...
checking for suffix of object files... configure: error: in
`/opt/gcc/p_build/x86_64-apple-darwin14.3.0/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
...

configure:3675: /opt/gcc/p_build/./gcc/xgcc -B/opt/gcc/p_build/./gcc/
-B/opt/gcc/gcc6p-224161p4/x86_64-apple-darwin14.3.0/bin/
-B/opt/gcc/gcc6p-224161p4/x86_64-apple-darwin14.3.0/lib/ -isystem
/opt/gcc/gcc6p-224161p4/x86_64-apple-darwin14.3.0/include -isystem
/opt/gcc/gcc6p-224161p4/x86_64-apple-darwin14.3.0/sys-include-c -g -O2 
conftest.c 5
built-in: internal compiler error: Segmentation fault: 11

built-in: internal compiler error: Abort trap: 6
xgcc: internal compiler error: Abort trap: 6 (program cc1)


[Bug c++/52869] [DR 1207] this not being allowed in noexcept clauses

2015-06-07 Thread lz96 at foxmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52869

--- Comment #1 from htfy96 lz96 at foxmail dot com ---
#include iostream
using namespace std;
class A
{
public:
void g() noexcept(false)  {}
void f() noexcept( noexcept( g() )) {};
};

A a;
int main()
{
coutnoexcept(a.f())endl;
return 0;
}

This is another testcase.


[Bug bootstrap/66448] [6 Regression] Bootstrap fails on darwin after r224161

2015-06-07 Thread iains at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66448

--- Comment #1 from Iain Sandoe iains at gcc dot gnu.org ---
Created attachment 35710
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35710action=edit
declare extern int __CFConstantStringClassReference lazily

There seem to be three issues triggered by 224161

1.  Debug is not initialised when the built-ins are initialised, therefore any
attempt to declare a variable at that time causes the segv. (hash table is not
present).

 * at present, *darwin* declares extern int
__CFConstantStringClassReference[] at the time that the CFString built-in is
initialised.

 - on the basis that it's not clear *if* such early declarations are allowed,
I've made a patch that makes the declaration lazily (when the fist use of the
built-in occurs).

 This works around the reported crash (one could also use DECL_SOURCE_LOCATION
!= BUILTINS_LOCATION as an additional test at passes.c:338, if built-ins *are*
supposed to be allowed to declare variables.

… however ...



2. Once (1) is fixed, bootstrap then fails with:

/GCC/gcc-trunk/gcc/ipa-pure-const.c:1640:1: error:
‘{anonymous}::pass_ipa_pure_const::pass_ipa_pure_const(gcc::context*)’ defined
but not used [-Werror=unused-function]
 pass_ipa_pure_const::

A --disable-werror boostrap completes, but there are a number of constructors
and destructors that report declared but not used. AFAICT, it's only
constructors/destructors.

This is occurring at stage #2, and I thought maybe that the stage#1 compiler
could have been mis-compiled by the bootstrap; however, gcc-4.9, 5.1 and clang
(xcode 5.1.1) bootstraps all give the same result.

… additional info …

=

3. During bootstrap (and in the test suite on the --disable-werror build) there
are a large number of warnings from ld64 (of course, this might be a limitation
of ld64, but for the record):

warning: invalid DWARF generated by the compiler: DIE 0x02f7 has multiple 
AT_location attributes in
'/GCC/ml/gcc-trunk-xtools/x86_64-apple-darwin12/libgcc/enable-execute-stack_s.o'.
warning: invalid DWARF generated by the compiler: DIE 0x0317 has multiple 
AT_location attributes in
'/GCC/ml/gcc-trunk-xtools/x86_64-apple-darwin12/libgcc/enable-execute-stack_s.o'.

[Bug ipa/66271] -Os generates incorrect code on ARM possibly due to IPA

2015-06-07 Thread gccbugs at rooted dot tk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66271

--- Comment #7 from gccbugs at rooted dot tk ---
Seems like it is indeed the same issue.


[Bug libstdc++/66455] New: is_always_equal unimplemented

2015-06-07 Thread potswa at mac dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66455

Bug ID: 66455
   Summary: is_always_equal unimplemented
   Product: gcc
   Version: 5.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: potswa at mac dot com
  Target Milestone: ---

std::allocator_traits does not contain a member is_equal, as required since
C++11.


[Bug rtl-optimization/65932] [5 Regression] Linux-3.10.75 on arm926ej-s does not boot due to wrong code generation

2015-06-07 Thread gccbugs at rooted dot tk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65932

gccbugs at rooted dot tk changed:

   What|Removed |Added

 CC||gccbugs at rooted dot tk

--- Comment #8 from gccbugs at rooted dot tk ---
Can confirm this on the 5-20150519 snapshot. Here's a self-contained snippet
demonstrates this problem (from vsprintf.c):

https://gcc.gnu.org/bugzilla/attachment.cgi?id=35613