[Bug target/57636] cr16: ICE while building libgcc

2013-06-18 Thread stefan at astylos dot dk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57636

--- Comment #1 from Stefan Sørensen  ---
Created attachment 30318
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30318&action=edit
Simple testcase that triggers the ICE when built with -Os -g

[Bug lto/57613] [LTO] error "multiple definition symbol" for local symbol

2013-06-18 Thread dimhen at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57613

--- Comment #2 from Dmitry G. Dyachenko  ---
(In reply to Richard Biener from comment #1)
> I don't think it works that way, hidden visibility makes it non-exported from
> the dynamic object but it's still visible inside the object.  You probably
> want to mark it local instead?

You are right. Thanks for clarifcation


[Bug lto/57613] [LTO] error "multiple definition symbol" for local symbol

2013-06-18 Thread dimhen at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57613

Dmitry G. Dyachenko  changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution|--- |INVALID


[Bug c/57630] Error should include -std=c11 and friends

2013-06-18 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57630

--- Comment #4 from Marek Polacek  ---
Author: mpolacek
Date: Tue Jun 18 07:41:19 2013
New Revision: 200163

URL: http://gcc.gnu.org/viewcvs?rev=200163&root=gcc&view=rev
Log:
PR c/57630
* c-decl.c (check_for_loop_decls): Improve diagnostics messages.


Modified:
trunk/gcc/c/ChangeLog
trunk/gcc/c/c-decl.c


[Bug c/57630] Error should include -std=c11 and friends

2013-06-18 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57630

Marek Polacek  changed:

   What|Removed |Added

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

--- Comment #5 from Marek Polacek  ---
Fixed.


[Bug target/57637] Miscompare on 178.galgel in SPEC2000 on arm

2013-06-18 Thread zhenqiang.chen at linaro dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57637

--- Comment #1 from zhenqiang.chen at linaro dot org ---

I had reproduced it on chrome book. It failed due to "alignment exception" for
O3.

I will do more investigation.

If this bug blocks your work, please try "-fno-shrink-wrap" to disable the
optimization.


[Bug lto/57334] [4.9 regression] ICE: in input_gimple_stmt, at gimple-streamer-in.c:287

2013-06-18 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57334

--- Comment #10 from Richard Biener  ---
(In reply to Jan Hubicka from comment #6)
> I am testing
> Index: lto-symtab.c
> ===
> --- lto-symtab.c(revision 200151)
> +++ lto-symtab.c(working copy)
> @@ -523,7 +523,8 @@ lto_symtab_merge_decls (void)
>  
>FOR_EACH_SYMBOL (node)
>  if (lto_symtab_symbol_p (node)
> -   && node->symbol.next_sharing_asm_name)
> +   && (node->symbol.next_sharing_asm_name
> +   || node->symbol.previous_sharing_asm_name))
>{
>  symtab_node n;
>  
> @@ -639,6 +640,7 @@ lto_symtab_prevailing_decl (tree decl)
>ret = symtab_node_for_asm (DECL_ASSEMBLER_NAME (decl));
>if (!ret)
>  return decl;
> +  gcc_checking_assert (TREE_PUBLIC (ret->symbol.decl) && !DECL_EXTERNAL
> (ret->symbol.decl));
>  
>return ret->symbol.decl;
>  }

The loop looks weird.  It probably should be re-structured to a simple

  FOR_EACH_SYMBOL (node)
if (!node->symbol.prev_sharing_asm_name
&& node->symbol.next_sharing_asm_name)
  lto_symtab_merge_decls_1 (node);

and not put too much magic into it.


[Bug lto/57334] [4.9 regression] ICE: in input_gimple_stmt, at gimple-streamer-in.c:287

2013-06-18 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57334

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |4.9.0

--- Comment #11 from Richard Biener  ---
Which fixes the testcase, too.  Giving it testing.


[Bug target/57637] Miscompare on 178.galgel in SPEC2000 on arm

2013-06-18 Thread ktkachov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57637

--- Comment #2 from ktkachov at gcc dot gnu.org ---
Thanks, Zhenqiang.

For me, it's a segfault in function DGETF2. gdb backtrace:
Program received signal SIGSEGV, Segmentation fault.
0x0001d964 in dgetf2_ ()
(gdb) bt
#0  0x0001d964 in dgetf2_ ()
#1  0x000255a4 in dgetrf_ ()
#2  0x00015856 in sysnsl_ ()
#3  0x0001194e in MAIN__ () at galgel.f90:9


Looking further into it, the segfault seems to be from the function idamax that
is inlined in dgetf2.

Hope this helps,
Kyrill


[Bug c/52773] internal error: in replace_pseudos_in, at reload1.c:577

2013-06-18 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52773

--- Comment #6 from Mikael Pettersson  ---
Created attachment 30319
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30319&action=edit
reduced test case

Still ICEs 4.9-20130616, 4.8-20130613, and 4.7-20130615.  Needs -O1 (or higher)
-funroll-loops -m68000 (or -m68010).  With -m68020 or higher it doesn't ICE. 
Suspect a target bug, so adding Andreas to cc: list.


[Bug lto/57334] [4.9 regression] ICE: in input_gimple_stmt, at gimple-streamer-in.c:287

2013-06-18 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57334

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #12 from Richard Biener  ---
Author: rguenth
Date: Tue Jun 18 09:56:59 2013
New Revision: 200165

URL: http://gcc.gnu.org/viewcvs?rev=200165&root=gcc&view=rev
Log:
2013-06-18  Richard Biener  

PR lto/57334
* lto-symtab.c (lto_symtab_merge_decls): Process nodes properly.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/lto-symtab.c


[Bug lto/57483] Linux kernel (lto-3.9 branch) compilation fails with enabled LTO

2013-06-18 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57483

Bug 57483 depends on bug 57334, which changed state.

Bug 57334 Summary: [4.9 regression] ICE: in input_gimple_stmt, at 
gimple-streamer-in.c:287
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57334

   What|Removed |Added

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


[Bug c++/57617] OpenMP critical does not seem to synchronise correctly

2013-06-18 Thread nmm1 at cam dot ac.uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57617

Nick Maclaren  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |INVALID

--- Comment #1 from Nick Maclaren  ---
Brilliant.  I had finger trouble with SSH.  I do not know how I managed to
look at the wrong version of the code for so long, but the update-in-critical
failures for both compilers are my error.

I shall change it to resolved but, if it resurfaces, it's my error.  Sorry.


[Bug libstdc++/57403] A vector of volatile int doesn't work, but one of volatile void * does

2013-06-18 Thread nmm1 at cam dot ac.uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57403

--- Comment #5 from Nick Maclaren  ---
Because of the last comment, I am not going to close this as resolved,
invalid, but please do so if appropriate.


[Bug rtl-optimization/57635] gcc hanging while compiling huge files

2013-06-18 Thread vijunag at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57635

--- Comment #2 from vijay Nag  ---
With the compiler flag "-fno-var-tracking", it compiles in less than a minute.
Although it is quite conspicuous from back-trace I thought it is worth
mentioning this info.


[Bug libstdc++/57641] New: std::timed_mutex.try_lock_until() is broken

2013-06-18 Thread mustrumr97 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57641

Bug ID: 57641
   Summary: std::timed_mutex.try_lock_until() is broken
   Product: gcc
   Version: 4.8.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mustrumr97 at gmail dot com

It uses the duration since the time_point's clock's epoch. What if it's not the
right clock? Different clocks may have different epochs. On my computer, the
function works OK if the time_point is from high_resolution_clock but doesn't
work if it's from steady_clock.


[Bug libstdc++/57641] std::timed_mutex.try_lock_until() is broken

2013-06-18 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57641

--- Comment #1 from Jonathan Wakely  ---
I agree that code assumes the epochs are the same, but what you describe
doesn't make sense since high_resolution_clock and steady_clock have the same
epoch in our implementation.  Are you seeing the first problem described at PR
54562?

Do you have a testcase?


[Bug libstdc++/57641] std::timed_mutex.try_lock_until() is broken

2013-06-18 Thread mustrumr97 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57641

--- Comment #2 from Hristo Venev  ---
Am I very stupid, or is

#include 
#include 
using Clock=std::chrono::steady_clock;
int main(){
std::timed_mutex m;
m.lock();
Clock::time_point tp=Clock::now()+std::chrono::seconds(2);
if(m.try_lock_until(tp)) return 1;
return 0;
}

supposed to run for ~2s and return 0?
With clang++ -stdlib=libc++ it works as I expect.
With clang++ -stdlib=libstdc++ and with g++ it returns 1 after 0.001s.

The result is the same for std::chrono::high_resolution_clock.

The test from cppreference.com is very similar.
http://en.cppreference.com/w/cpp/thread/timed_mutex/try_lock_until

What the hell is going on?


[Bug libstdc++/57641] std::timed_mutex.try_lock_until() is broken

2013-06-18 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57641

--- Comment #3 from Jonathan Wakely  ---
Testcase using clock with an earlier epoch:

#include 
#include 
#include 
#include 

namespace C = std::chrono;

struct clock
{

typedef C::system_clock::rep rep;
typedef C::system_clock::period period;
typedef C::system_clock::duration duration;
typedef std::chrono::time_point time_point;
static constexpr bool is_steady = C::system_clock::is_steady;

static time_point now() {
return time_point(C::system_clock::now().time_since_epoch() +
C::seconds(10));
}
};

std::timed_mutex mx;

void f()
{
mx.try_lock_until(clock::now() + C::milliseconds(1));
}

int main()
{
std::lock_guard l(mx);
auto start = C::system_clock::now();
std::thread t(f);
t.join();
auto stop = C::system_clock::now();
assert( (stop - start) < C::seconds(9) );
}


[Bug libstdc++/57641] std::timed_mutex.try_lock_until() is broken

2013-06-18 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57641

--- Comment #4 from Jonathan Wakely  ---
It's undefined behaviour because you try to lock the same mutex twice in the
same thread, see my testcase for a well-defined way to do it, calling
try_lock_until in a new thread.


[Bug libstdc++/57641] std::timed_mutex.try_lock_until() is broken

2013-06-18 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57641

Jonathan Wakely  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2013-06-18
 Ever confirmed|0   |1

--- Comment #5 from Jonathan Wakely  ---
The timed mutex requirements [thread.timedmutex.requirements] say:

The expression m.try_lock_until(abs_time) shall be well-formed and have the
following semantics:
Requires: If m is of type std::timed_mutex, the calling thread does not own the
mutex.

Anyway, confirming as there's a bug here relating to clocks with different
epochs, but it's easy enough to fix, I can look into it.  The same problem
exists with the private mutex type defined in std::shared_mutex


[Bug tree-optimization/57642] New: vectorizer not working with function templates

2013-06-18 Thread yzhang1985 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57642

Bug ID: 57642
   Summary: vectorizer not working with function templates
   Product: gcc
   Version: 4.8.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: yzhang1985 at gmail dot com

Hi, the following simple loop doesn't vectorize in GCC 4.8.1, but does with
4.3.2. It does vectorize if I make DoIt a regular function instead of a
templated function.


#include 
#include 
#include 
#include 
#include 
#include 


class SqrtFunc
{
public:
  float operator()(float x)
  {
return (((3.02f * x) + 1.5f) * x - 2.1f) * x + 1.5f;
  }
};

template 
void DoIt(float *data, int size, Functor functor)
{
  for (int i = 0; i < size; ++i)
  {
data[i] = functor(data[i]);
  }
}


int main()
{
  float data[2048];
  SqrtFunc functor;
  DoIt(data, sizeof(data), functor);
  return 0;
}


[Bug tree-optimization/57642] vectorizer not working with function templates

2013-06-18 Thread yzhang1985 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57642

--- Comment #1 from Yale Zhang  ---
I would like to know if there's an easy work around for this.


[Bug libitm/57643] New: libitm.c/reentrant.c hangs on POWER8 with HTM

2013-06-18 Thread bergner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57643

Bug ID: 57643
   Summary: libitm.c/reentrant.c hangs on POWER8 with HTM
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libitm
  Assignee: unassigned at gcc dot gnu.org
  Reporter: bergner at gcc dot gnu.org

The libitm.c/reentrant.c test case hangs on POWER8 hardware with HTM.  The
symptoms I'm seeing are my tbegin. instruction succeeds, but we fail the test
(meaning someone has the write lock) at beginend.cc:200:

if (unlikely(serial_lock.is_write_locked()))
  htm_abort();

...so we abort the transaction.  The failure is not persistent, so we do
not break out of the loop due to:

if (!htm_abort_should_retry(ret))
  break;

We then fall into the following code, where we hang trying to get the
read lock:

serial_lock.read_lock(tx);

If I hack the call to htm_abort_should_retry(ret) so that we break of of the
loop and fallback to SW TM, then the test case executes correctly.  Andreas
Krebbel said this fails on S390 as well.  Andreas Kleen said this works on X86
with RTM.  It's unknown whether on X86 whether its hw txn fails or succeeds or
whether if it does fail over to sw txn, whether it skips the code we're hanging
in.


[Bug c++/57638] warning container: 'integer_cst’ not supported by dump_type#

2013-06-18 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57638

Manuel López-Ibáñez  changed:

   What|Removed |Added

 CC||manu at gcc dot gnu.org

--- Comment #1 from Manuel López-Ibáñez  ---
Maybe this?

It works for this testcase, but haven't run the testsuite.

Index: pt.c
===
--- pt.c(revision 198545)
+++ pt.c(working copy)
@@ -16940,11 +16940,11 @@ unify (tree tparms, tree targs, tree par
   else if (uses_template_parms (tparm))
/* We haven't deduced the type of this parameter yet.  Try again
   later.  */
return unify_success (explain_p);
   else
-   return unify_type_mismatch (explain_p, tparm, arg);
+   return unify_type_mismatch (explain_p, tparm, TREE_TYPE (arg));

   /* If ARG is a parameter pack or an expansion, we cannot unify
 against it unless PARM is also a parameter pack.  */
   if ((template_parameter_pack_p (arg) || PACK_EXPANSION_P (arg))
  && !TEMPLATE_PARM_PARAMETER_PACK (parm))

[Bug bootstrap/57609] S/390 ESA mode bootstrap failure since r197266

2013-06-18 Thread jbg...@lug-owl.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57609

Jan-Benedict Glaw  changed:

   What|Removed |Added

 CC||jbg...@lug-owl.de

--- Comment #1 from Jan-Benedict Glaw  ---
Your recent commit breaks gcc build:


commit f5cf1225bb37f43fa5bfca32cddadb9ee61aaa63
Author: krebbel 
Date:   Tue Jun 18 08:59:46 2013 +

2013-06-18  Andreas Krebbel  

PR target/57609
* config/s390/s390.c (s390_chunkify_start): Replace next_real_insn
with next_active_insn.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@200164
138bc75d-0d04-0410-961f-82ee72b054a4




g++ -c   -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE  -fno-exceptions -fno-rtti
-fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings
-Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long
-Wno-variadic-macros -Wno-overlength-strings -fno-common  -DHAVE_CONFIG_H -I.
-I. -I../../../../gcc/gcc -I../../../../gcc/gcc/.
-I../../../../gcc/gcc/../include -I../../../../gcc/gcc/../libcpp/include 
-I../../../../gcc/gcc/../libdecnumber -I../../../../gcc/gcc/../libdecnumber/dpd
-I../libdecnumber -I../../../../gcc/gcc/../libbacktrace\
../../../../gcc/gcc/config/s390/s390.c -o s390.o
../../../../gcc/gcc/config/s390/s390.c: In function ‘constant_pool*
s390_chunkify_start()’:
../../../../gcc/gcc/config/s390/s390.c:7088:7: error: ‘dump_file’ was not
declared in this scope
../../../../gcc/gcc/config/s390/s390.c:7099:6: error: ‘dump_file’ was not
declared in this scope
../../../../gcc/gcc/config/s390/s390.c:7100:19: error: ‘print_rtx’ was not
declared in this scope
make[2]: *** [s390.o] Error 1
make[2]: Leaving directory `/home/vaxbuild/build/s390x-linux/gcc-stage1/gcc'
make[1]: *** [all-gcc] Error 2
make[1]: Leaving directory `/home/vaxbuild/build/s390x-linux/gcc-stage1'


You need to include dumpfile.h (for dump_file) and rtl.h (for print_rtx).

[Bug tree-optimization/57642] vectorizer not working with function templates

2013-06-18 Thread yzhang1985 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57642

Yale Zhang  changed:

   What|Removed |Added

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

--- Comment #2 from Yale Zhang  ---
Sorry, please close this. My loop was eliminated as dead code, thus no
vectorization. I saw the message not enough data-refs for auto-vectorization,
which made me think it wasn't being vectorized, but that's probably from
somewhere else.


[Bug libstdc++/57641] std::timed_mutex.try_lock_until() is broken

2013-06-18 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57641

Jonathan Wakely  changed:

   What|Removed |Added

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


[Bug c++/53211] range-based 'for' expression of type 'const int []' has incomplete type

2013-06-18 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53211

Paolo Carlini  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC|i.nixman at gmail dot com  |
   Assignee|unassigned at gcc dot gnu.org  |paolo.carlini at oracle 
dot com

--- Comment #5 from Paolo Carlini  ---
Comment #1 fixed in mainline so far.


[Bug other/53317] Conversion from __int128 to __float128

2013-06-18 Thread jsm28 at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53317

Joseph S. Myers  changed:

   What|Removed |Added

 Status|WAITING |NEW

--- Comment #4 from Joseph S. Myers  ---
Bug rediscovered through inspection of soft-fp code, patch posted at:
http://sourceware.org/ml/libc-alpha/2013-06/msg00656.html

I have a complete, tested GCC patch updating soft-fp and adding a testcase
ready to commit once the soft-fp patch is approved for glibc.  If someone then
wishes to backport a fix for this (as a wrong-code bug) to active release
branches, the soft-fp patch itself (plus GCC testcase) should be easy enough to
apply to past branches without the whole soft-fp update.


[Bug libstdc++/57641] std::timed_mutex.try_lock_until() is broken

2013-06-18 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57641

Jonathan Wakely  changed:

   What|Removed |Added

   Target Milestone|--- |4.8.2

--- Comment #6 from Jonathan Wakely  ---
Fixed on trunk, I'll fix this for 4.8.2 as well.


[Bug c++/57638] warning container: 'integer_cst’ not supported by dump_type#

2013-06-18 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57638

Paolo Carlini  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2013-06-18
 Ever confirmed|0   |1

--- Comment #2 from Paolo Carlini  ---
Patch works great for me and passes testing. Are you going to submit it? In
fact, I don't think you really need an approval.


[Bug c++/57638] warning container: 'integer_cst’ not supported by dump_type#

2013-06-18 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57638

--- Comment #3 from Manuel López-Ibáñez  ---
(In reply to Paolo Carlini from comment #2)
> Patch works great for me and passes testing. Are you going to submit it? In
> fact, I don't think you really need an approval.

If you could do that for me, I would appreciate it. Sadly, I don't have as much
free time to dedicate to GCC as I used to. If you don't have time, I will
eventually do it, but it may take me some time.

[Bug c++/57638] warning container: 'integer_cst’ not supported by dump_type#

2013-06-18 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57638

--- Comment #4 from Paolo Carlini  ---
No problem, patch sent.


[Bug lto/57483] Linux kernel (lto-3.9 branch) compilation fails with enabled LTO

2013-06-18 Thread marxin.liska at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57483

--- Comment #2 from Martin Liška  ---
Works for me, could be marker as fixed.

[Bug libstdc++/54562] mutex and condition variable timers

2013-06-18 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54562

Jonathan Wakely  changed:

   What|Removed |Added

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

--- Comment #4 from Jonathan Wakely  ---
Created attachment 30320
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30320&action=edit
proposed patch to use clocks correctly

The  change should be unnecessary, as high_resolution_clock
is a typedef for system_clock in our implementation.

The timed_mutex change is an improvement but not ideal, because the standard
says implementations "should" use a steady clock for try_lock_for() but use the
system_clock for try_lock_until(), and pthread_mutex_timedlock() uses
CLOCK_REALTIME, which corresponds to our system_clock.

I'm going to test this patch (against the current svn trunk, after
gcc.gnu.org/r200180) to fix the timed_mutex issue. The patch attempts to use
the steady clock for relative timeouts, converting to the high_resolution_clock
(aka system_clock) for the pthread call, and re-checks on timeout to handle 
cases where a clock is adjusted during the wait.

N.B. your test technically has undefined behaviour because it attempts to
relock the mutex in the same thread, I'm using this to reproduce the problem
instead:

#include 
#include 
#include 
#include 

typedef std::chrono::high_resolution_clock rt_clock;
typedef std::chrono::time_point rt_time_point;

std::timed_mutex mutex;

void f()
{
mutex.try_lock_for(std::chrono::seconds(3));
}

int main()
{
mutex.lock();
std::cout << "mutex locked" << std::endl;

rt_time_point t1 = rt_clock::now();
std::thread(f).join();
rt_time_point t2 = rt_clock::now();
std::cout << "delay: " 
  <<
std::chrono::duration_cast(t2-t1).count()
  << std::endl;
return 0;
}


[Bug c++/57644] New: [C++1y] Cannot bind bitfield to lvalue reference

2013-06-18 Thread lucdanton at free dot fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57644

Bug ID: 57644
   Summary: [C++1y] Cannot bind bitfield to lvalue reference
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: lucdanton at free dot fr

$ g++-snapshot --version
g++-snapshot (Debian 20130603-1) 4.9.0 20130603 (experimental) [trunk revision
199603]

$ cat main.cpp 
struct foo {
unsigned i: 32;
};

int main()
{
foo f {};
return (f.i);
}

$ g++-snapshot -std=c++1y main.cpp 
main.cpp: In function 'int main()':
main.cpp:8:15: error: cannot bind bitfield 'f.foo::i' to 'unsigned int&'
 return (f.i);
   ^

---

The code is accepted if either the parens are removed (i.e. just return f.i;)
or when using -std=c++11.


[Bug c++/57645] New: Explicitly-declared destructor with no exception specification is always noexcept(true)

2013-06-18 Thread travis at gockelhut dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57645

Bug ID: 57645
   Summary: Explicitly-declared destructor with no exception
specification is always noexcept(true)
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: travis at gockelhut dot com

#include 

struct Thrower
{
~Thrower() noexcept(false) { throw 1; }
};

struct Explicit
{
~Explicit() {}

Thrower t;
};
static_assert(!std::is_nothrow_destructible::value, "Explicit");


This will fail on the static_assert in 4.8, in contrast to §15.4.14:

> ..If f is an...destructor...it's implicit exception-specification 
> specifies...f has the exception-specification noexcept(true) if every 
> function it directly invokes allows no exceptions.

And Thrower::~Thrower is directly invoked according to §12.4.8:

> After executing the body of the destructor and destroying any automatic 
> objects allocated within the body, a destructor for class X calls the 
> destructors for X’s direct non-variant non-static data members...

[Bug c++/57646] New: bogus warning about uninitialized ‘saved_stack.1’ with gotos and VLAs

2013-06-18 Thread b.r.longbons at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57646

Bug ID: 57646
   Summary: bogus warning about uninitialized ‘saved_stack.1’ with
gotos and VLAs
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: b.r.longbons at gmail dot com

Created attachment 30321
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30321&action=edit
minimal testcase

The attached reduced testcase gives a warning that a nonexistent variable,
'saved_stack.1', may be used uninitialized.

The testcase does not need any special compiler flags.

There are a bunch of bugs with similar descriptions, but they either don't
involve invented variables or were marked as fixed.
In particular, it looks fairly similar to bug 43013, which was fixed before
4.6.0. The differences I can see are that this only seems to happen in C++ with
VLAs.

Bad versions, all amd64:
Gentoo: 4.4.7, 4.5.4, 4.6.0, 4.6.1, 4.6.2, 4.6.3, 4.6.4, 4.7.0, 4.7.1, 4.7.2,
4.7.3
Debian: 4.6.4-2, 4.7.3-4, 4.8.1-2

4.3.6 does not exhibit this issue, but that's too old to compile the codebase
this is in. Since I haven't found a workaround short of disabling the warning,
I'm stuck with clang for now, which lacks support for a lot of other essential
warnings (*grumbles about old bug reports that still aren't fixed*).

[Bug c/57647] New: lvalue required as increment operand

2013-06-18 Thread vijunag at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57647

Bug ID: 57647
   Summary: lvalue required as increment operand
   Product: gcc
   Version: 4.7.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: vijunag at gmail dot com

I recently upgraded my gcc compiler from 3.4.X to 4.7.2 for my project.

Consider the following expression

char *foo = &bar;
((unsigned long*)foo)++

While gcc 3.4.X was more forgiving of this issue, 4.7.2 barfs out an error
"lvalue required as increment operand".

I did notice in gcc documentation that "cast as l-value has been removed".

C and Objective-C

The -Wstrict-aliasing=2 option has been added. This warning catches all
unsafe cases, but it may also give a warning for some cases that are safe.
The cast-as-lvalue, conditional-expression-as-lvalue and
compound-expression-as-lvalue extensions, which were deprecated in 3.3.4 and
3.4, have been removed.
The -fwritable-strings option, which was deprecated in 3.4, has been
removed.
#pragma pack() semantics have been brought closer to those used by other
compilers. This also applies to C++.
Taking the address of a variable with register storage is invalid in C. GCC
now issues an error instead of a warning.
Arrays of incomplete element type are invalid in C. GCC now issues an error
for such arrays. Declarations such as extern struct s x[]; (where struct s has
not been defined) can be moved after the definition of struct s. Function
parameters declared as arrays of incomplete type can instead be declared as
pointers.

So the natural fix and equivalent legitimate expression for the same would 
((unsigned long *)foo++), however with -Wall gcc again warns about
unused-value.

While gcc accepts the expression ((unsigned long*)foo++), the expression has
become useless when -Wall -Werror  is turned on since it throws
"-Werror=unused-value".

Either the expression should completely be removed or GCC should stop warning
about such expressions.


[Bug bootstrap/57604] LRA related bootstrap comparison failure on s390x --with-arch=zEC12

2013-06-18 Thread krebbel at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57604

--- Comment #3 from Andreas Krebbel  ---
(In reply to Vladimir Makarov from comment #2)
Thanks! Btw. the Ada and Java bootstraps started failing with enabling LRA for
S/390 (also without --with-arch=...).  I'll wait for a patch for this PR before
having a closer look. Perhaps the fails are related?!