[Bug target/55811] [ERROR] - not enough GOT space for local GOT entries

2012-12-26 Thread pinskia at gcc dot gnu.org


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



Andrew Pinski pinskia at gcc dot gnu.org changed:



   What|Removed |Added



 Target||mips64-octeon-linux-gnu

  Component|c   |target



--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2012-12-26 
08:28:56 UTC ---

Can you report this directly to Cavium since you are using their (well I work

for them) toolchain?  Cavium includes a fix inside their binutils for an issue

like this, are you using their binutils or your own?



Also -Wa,-xgot does not make a difference really for 4.3 since 4.3 does

explicit got references now; you should use -mxgot instead.



   -Wl,-Bstatic -lstdc++ -lrt -lm -Wl,-Bdynamic



is also bad form.



Really you should using Cavium's FAEs for help rather than going directly to

the FSF for support.


[Bug target/55811] [ERROR] - not enough GOT space for local GOT entries

2012-12-26 Thread manish.jamwal at gmail dot com


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



--- Comment #2 from Manish manish.jamwal at gmail dot com 2012-12-26 09:17:31 
UTC ---

Hi Andrew



Yes, I am using cavium's toolchain.



Will contact Cavium's FAEs for further issues.



Thanks very much for your quick reply.



Have nice day



On Wed, Dec 26, 2012 at 1:58 PM, pinskia at gcc dot gnu.org 

gcc-bugzi...@gcc.gnu.org wrote:



 is also bad form


[Bug tree-optimization/55812] New: Unnecessary TLS accesses

2012-12-26 Thread glisse at gcc dot gnu.org


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



 Bug #: 55812

   Summary: Unnecessary TLS accesses

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Keywords: missed-optimization

  Severity: normal

  Priority: P3

 Component: tree-optimization

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: gli...@gcc.gnu.org

Target: x86_64-linux-gnu





Hello,



TLS accesses are expensive, so as much as possible gcc should copy the address

to a local variable and use that instead. The following example may not be very

good, I am just trying to illustrate the issue.



#include vector

thread_local std::vectorint v;

int main(){

  for(long i=0;i4;++i){

v.push_back(i);

  }

  return v.size();

}



compiled with g++ -std=c++11 -O2 -Wall -DNDEBUG. If I remove thread_local,

the speed-up is about 20%. It seems to me that the compiler should get the

address of v once at the beginning of main and use that for the rest of the

function, and thus the performance difference should be negligible.



If I add static in front of thread_local, the program fails to link, but my

gcc snapshot is a bit old (Nov 20) and I think I've already seen that reported.



I was surprised not to find any compiler option that would disable threads, so

I could write thread_local but not pay the price when compiling a

single-threaded program. Without -pthread, glibc uses cheap thread-unsafe

functions, but I still pay for TLS.


[Bug c++/48920] typename specifier should not ignore non-type names

2012-12-26 Thread redi at gcc dot gnu.org


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



--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org 2012-12-26 
13:21:27 UTC ---

For the first testcase [basic.scope.class] says no diagnostic required, doesn't

it?


[Bug c++/55813] New: Poorly named/documented option Wctor-dtor-privacy

2012-12-26 Thread harald at gigawatt dot nl


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



 Bug #: 55813

   Summary: Poorly named/documented option Wctor-dtor-privacy

Classification: Unclassified

   Product: gcc

   Version: 4.7.2

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c++

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: har...@gigawatt.nl





The -Wctor-dtor-privacy option is documented as



`-Wctor-dtor-privacy (C++ only)'

 Warn when a class seems unusable, because all the constructors or

 destructors in a class are private and the class has no friends or

 public static member functions.



However, the option warns for more than just that:



class A { // warning: all member functions in class 'A' are private

void f();

};



class B { // no warning

void f() {}

public:

B() {}

};



The documentation does not explain why a warning for A is issued, nor does it

explain why A is treated differently from B. The option's name suggests that no

warning should be generated for either of them, but I cannot tell what the

actual intended behaviour is, only that gcc has behaved this way since before

3.x.


[Bug tree-optimization/55812] Unnecessary TLS accesses

2012-12-26 Thread glisse at gcc dot gnu.org


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



--- Comment #1 from Marc Glisse glisse at gcc dot gnu.org 2012-12-26 15:43:50 
UTC ---

More precisely, the following seems equivalent to me and gets back all the

performance, so it would be good if gcc could turn the original code into this

one.



#include vector

thread_local std::vectorint v;

int main(){

  std::vectorint*vp=v;

  for(long i=0;i4;++i){

vp-push_back(i);

  }

  return vp-size();

}


[Bug target/53789] ICE in gen_reg_rtx, at emit-rtl.c:864/865 when compiling GNU MPFR on parisc

2012-12-26 Thread danglin at gcc dot gnu.org


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



--- Comment #13 from John David Anglin danglin at gcc dot gnu.org 2012-12-26 
17:29:12 UTC ---

Author: danglin

Date: Wed Dec 26 17:29:08 2012

New Revision: 194723



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

Log:

PR target/53789

* config/pa/pa.md (movsi): Reject expansion of TLS symbol references

after reload starts.





Modified:

branches/gcc-4_6-branch/gcc/ChangeLog

branches/gcc-4_6-branch/gcc/config/pa/pa.md


[Bug middle-end/55814] New: Missed optimization with short-circuit evaluation

2012-12-26 Thread tkoenig at gcc dot gnu.org


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



 Bug #: 55814

   Summary: Missed optimization with short-circuit evaluation

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: enhancement

  Priority: P3

 Component: middle-end

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: tkoe...@gcc.gnu.org





See PR 55806.



The Fortran front end generates code for intrinsics like ANY and ALL

which looks like (after loop unrolling)



_Bool foo(int *a, int *b)

{

  _Bool f0, f1, f2, f3;



  f0 = a[0]  b[0];

  f1 = a[1]  b[1];

  f2 = a[2]  b[2];

  f3 = a[2]  b[2];



  return f0 || f1 || f2 || f3;

}



There should be no need to perform the second comparison if the

first one is true.


[Bug fortran/54992] [4.8 Regression] [OOP] Wrong offset in the array offset calculation when using nonclass%class(index)%nonclass

2012-12-26 Thread pault at gcc dot gnu.org


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



Paul Thomas pault at gcc dot gnu.org changed:



   What|Removed |Added



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

   |gnu.org |



--- Comment #4 from Paul Thomas pault at gcc dot gnu.org 2012-12-26 17:56:31 
UTC ---

This is another result of the underlying bug unearthed in PR54990.



Index: gcc/fortran/trans-array.c

===

*** gcc/fortran/trans-array.c(revision 194721)

--- gcc/fortran/trans-array.c(working copy)

*** static tree

*** 3099,3112 

  build_array_ref (tree desc, tree offset, tree decl)

  {

tree tmp;



/* Class array references need special treatment because the assigned

   type size needs to be used to point to the element.  */ 

if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc))

   TREE_CODE (desc) == COMPONENT_REF

!  GFC_CLASS_TYPE_P (TREE_TYPE (TREE_OPERAND (desc, 0

  {

!   tree type = gfc_get_element_type (TREE_TYPE (desc));

tmp = TREE_OPERAND (desc, 0);

tmp = gfc_get_class_array_ref (offset, tmp);

tmp = fold_convert (build_pointer_type (type), tmp);

--- 3099,3118 

  build_array_ref (tree desc, tree offset, tree decl)

  {

tree tmp;

+   tree type;

+ 

+   type = TREE_TYPE (TREE_OPERAND (desc, 0));

+   if (TYPE_CANONICAL (type)

+GFC_CLASS_TYPE_P (TYPE_CANONICAL (type)))

+ type = TYPE_CANONICAL (type);



/* Class array references need special treatment because the assigned

   type size needs to be used to point to the element.  */ 

if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc))

   TREE_CODE (desc) == COMPONENT_REF

!  GFC_CLASS_TYPE_P (type))

  {

!   type = gfc_get_element_type (TREE_TYPE (desc));

tmp = TREE_OPERAND (desc, 0);

tmp = gfc_get_class_array_ref (offset, tmp);

tmp = fold_convert (build_pointer_type (type), tmp);



fixes it.  As remarked in PR54990, I do not know why this regression has

occurred.  Evidently, GFC_CLASS_TYPE_P is not being transferred from the

canonical type, whereas this was happening before the regression (or a new type

was not being generated?).  I will investigate more.



I have taken this PR.



Cheers



Paul


[Bug libfortran/48960] OPEN statement modifies NEWUNIT variable on error

2012-12-26 Thread jvdelisle at gcc dot gnu.org


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



--- Comment #4 from Jerry DeLisle jvdelisle at gcc dot gnu.org 2012-12-26 
18:11:50 UTC ---

Author: jvdelisle

Date: Wed Dec 26 18:11:42 2012

New Revision: 194724



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

Log:

2012-12-26  Jerry DeLisle  jvdeli...@gcc.gnu.org



PR libfortran/48960

* io/open.c (st_parameter_open):  Assign newunit number to user

variable only if the the associated open statement is successful.



Modified:

trunk/libgfortran/ChangeLog

trunk/libgfortran/io/open.c


[Bug sanitizer/55561] TSAN: Fortran/OMP yields false positives

2012-12-26 Thread Joost.VandeVondele at mat dot ethz.ch


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



--- Comment #17 from Joost VandeVondele Joost.VandeVondele at mat dot ethz.ch 
2012-12-26 19:34:29 UTC ---

Another testcase that yields warnings with a sanitized libgomp:



!$omp parallel default(none) private(i,j,k) 

!$omp do collapse(3)

DO k = 1,10

DO j = 1,10

DO i = 1,10

ENDDO

ENDDO

ENDDO

!$omp end parallel



END 



WARNING: ThreadSanitizer: data race (pid=16133)

  Read of size 8 at 0x7d3272c8 by main thread:

#0 gomp_iter_static_next

/data/vjoost/gnu/gcc_exp/obj/x86_64-unknown-linux-gnu/libgomp/../../../gcc/libgomp/iter.c:71

(libgomp.so.1+0x623d)

#1 GOMP_loop_static_start

/data/vjoost/gnu/gcc_exp/obj/x86_64-unknown-linux-gnu/libgomp/../../../gcc/libgomp/loop.c:110

(libgomp.so.1+0x78ac)

#2 MAIN__._omp_fn.0 /data/vjoost/clean/cp2k/test.f90:2 (exe+0x0c64)


[Bug target/53789] ICE in gen_reg_rtx, at emit-rtl.c:864/865 when compiling GNU MPFR on parisc

2012-12-26 Thread danglin at gcc dot gnu.org


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



John David Anglin danglin at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #14 from John David Anglin danglin at gcc dot gnu.org 2012-12-26 
19:47:33 UTC ---

ICE is fixed on all active branches.  However, there seems to be another

problem with the tconst_pi test

on hppa-linux.  Looking into it.



On HP-UX 11.11, 3.1.1 with allpatches builds and checks successfully for both

32 and 64 bit targets.


[Bug bootstrap/55784] [4.8 regression] declaration of C function 'const char* strsignal(int)' conflicts with /usr/include/string.h:112: error: previous declaration

2012-12-26 Thread pinskia at gcc dot gnu.org


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



Andrew Pinski pinskia at gcc dot gnu.org changed:



   What|Removed |Added



   Severity|normal  |blocker


[Bug middle-end/55114] [4.8 Regression] gcc.dg/builtins-53.c ICEs on mips64 soft-float

2012-12-26 Thread pinskia at gcc dot gnu.org


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



Andrew Pinski pinskia at gcc dot gnu.org changed:



   What|Removed |Added



   Keywords||ice-on-valid-code, patch

 Status|UNCONFIRMED |NEW

URL||http://gcc.gnu.org/ml/gcc-p

   ||atches/2012-12/msg01369.htm

   ||l

   Last reconfirmed||2012-12-26

 Ever Confirmed|0   |1



--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2012-12-26 
21:33:37 UTC ---

Confirmed based on the patch.


[Bug libstdc++/55815] New: switch hash function of libstdc++ hash tables to siphash

2012-12-26 Thread felix-gcc at fefe dot de


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



 Bug #: 55815

   Summary: switch hash function of libstdc++ hash tables to

siphash

Classification: Unclassified

   Product: gcc

   Version: unknown

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: libstdc++

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: felix-...@fefe.de





Hash functions traditionally used by language runtimes for hash tables do not

assume that input values will be chosen maliciously to cause collisions and

degrade performance.  This has become a published attack vector on internet

facing hash tables as used in, for example, web services or even memory cache

code in front of a database or so.



libsupc++ implements the Murmur hash, which was specifically targeted in a

recent paper attacking hash functions.  See https://131002.net/siphash/ for the

attack code that produces collisions in Murmur2 and Murmur3.



libsupc++ should switch the hash function to siphash, the function proposed by

the authors of this attack.



The same bug should be filed against other user facing hash table

implementations in gcc.  I can think of Java and Go, but there might be others.



It may even make sense to replace the hash code gcc itself uses, as there are

now web pages where you can paste code and see which code gcc generates for it,

turning this problem into a security issue if someone pastes code with

colliding symbols to exploit this problem.


[Bug middle-end/55814] Missed optimization with short-circuit evaluation of always evaluated comparisons/loads

2012-12-26 Thread pinskia at gcc dot gnu.org


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



Andrew Pinski pinskia at gcc dot gnu.org changed:



   What|Removed |Added



   Keywords||missed-optimization

 Status|UNCONFIRMED |NEW

   Last reconfirmed||2012-12-26

Summary|Missed optimization with|Missed optimization with

   |short-circuit evaluation|short-circuit evaluation of

   ||always evaluated

   ||comparisons/loads

 Ever Confirmed|0   |1



--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2012-12-26 
21:46:40 UTC ---

This is a sinking issue.  Sinking of loads.

If the code was written as:

_Bool foo(int *a, int *b)

{

  return (a[0]  b[0]) || (a[1]  b[1]) || (a[2]  b[2]) || (a[3]  b[3]);

}



Instead then it would short-circuit correctly.


[Bug target/55812] Unnecessary TLS accesses

2012-12-26 Thread pinskia at gcc dot gnu.org


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



Andrew Pinski pinskia at gcc dot gnu.org changed:



   What|Removed |Added



  Component|tree-optimization   |target



--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org 2012-12-26 
21:54:57 UTC ---

TLS accesses are expensive



They should not be except for the -fPIC case.


[Bug tree-optimization/55812] Unnecessary TLS accesses

2012-12-26 Thread pinskia at gcc dot gnu.org


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



Andrew Pinski pinskia at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2012-12-26

  Component|target  |tree-optimization

 Ever Confirmed|0   |1

   Severity|normal  |enhancement



--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org 2012-12-26 
21:57:12 UTC ---

The issue is rather the call to _ZTH1v ( __tls_init) than anything else.

So it is not TLS accesses which are expensive but rather making sure the

thread_local variable has been initialized.



I think Jason had proposed an attribute for these function calls but it was

rejected IIRC.


[Bug tree-optimization/55600] excessive size of vectorized code

2012-12-26 Thread neleai at seznam dot cz


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



--- Comment #2 from Ondrej Bilka neleai at seznam dot cz 2012-12-26 22:03:59 
UTC ---

Yes when 128 is replaced by smaller constant. Attached patch gives on my i5

following:

size 32

vector



real0m0.224s

user0m0.220s

sys0m0.000s

unroll



real0m0.155s

user0m0.148s

sys0m0.004s

size 64

vector



real0m0.398s

user0m0.396s

sys0m0.000s

unroll



real0m0.380s

user0m0.376s

sys0m0.000s

size 128

vector



real0m0.703s

user0m0.700s

sys0m0.000s

unroll



real0m0.817s

user0m0.812s

sys0m0.000s


[Bug tree-optimization/55600] excessive size of vectorized code

2012-12-26 Thread neleai at seznam dot cz


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



--- Comment #3 from Ondrej Bilka neleai at seznam dot cz 2012-12-26 22:05:37 
UTC ---

Created attachment 29052

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

benchmark


[Bug c++/55804] [4.7/4.8 regression] GCC omits required call to constructor

2012-12-26 Thread pinskia at gcc dot gnu.org


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



Andrew Pinski pinskia at gcc dot gnu.org changed:



   What|Removed |Added



Version|unknown |4.7.3

   Target Milestone|--- |4.8.0


[Bug middle-end/55797] [4.8 Regression] ICE: verify_cgraph_node failed: edge has no corresponding call_stmt

2012-12-26 Thread pinskia at gcc dot gnu.org


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



Andrew Pinski pinskia at gcc dot gnu.org changed:



   What|Removed |Added



   Target Milestone|--- |4.8.0


[Bug c++/55810] pedantic-errors can not show message for redefined macros in system_header

2012-12-26 Thread guojiufu at gmail dot com


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



Jeff Guo guojiufu at gmail dot com changed:



   What|Removed |Added



 Status|RESOLVED|CLOSED



--- Comment #2 from Jeff Guo guojiufu at gmail dot com 2012-12-27 04:03:53 
UTC ---

closed


[Bug libfortran/48960] OPEN statement modifies NEWUNIT variable on error

2012-12-26 Thread jvdelisle at gcc dot gnu.org


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



--- Comment #5 from Jerry DeLisle jvdelisle at gcc dot gnu.org 2012-12-27 
06:37:15 UTC ---

Fixed on trunk. I will commit a test case before closing this.


[Bug fortran/48976] INQUIRE with STREAM= not supported

2012-12-26 Thread jvdelisle at gcc dot gnu.org


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



--- Comment #3 from Jerry DeLisle jvdelisle at gcc dot gnu.org 2012-12-27 
06:39:08 UTC ---

A patch has been submitted for review.