[Bug libquadmath/55225] Fail to build lgammaq.c from trunk with mingw-w64

2012-11-21 Thread alexpux at gmail dot com


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



Alexey Pavlov alexpux at gmail dot com changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||WONTFIX



--- Comment #1 from Alexey Pavlov alexpux at gmail dot com 2012-11-21 
08:02:29 UTC ---

Fixed in mingw-w64 trunk


[Bug bootstrap/52887] Bootstrap on AIX failure: Undefined symbol: .std::functionvoid (std::__regex::_PatternCursor const, std::__regex::_Results)::function(std::functionvoid (std::__regex::_Patte

2012-11-21 Thread gilles.pion at gmail dot com


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



Gilles Pion gilles.pion at gmail dot com changed:



   What|Removed |Added



 CC||gilles.pion at gmail dot

   ||com



--- Comment #24 from Gilles Pion gilles.pion at gmail dot com 2012-11-21 
08:02:41 UTC ---

I have the exact same problem on AIX 5.3 trying to bootstrat GCC but with

version 4.7.2. in my case



I have to admit that I don't understand all the issues described here but since

I've been able to bootstrap 7.2.1 without any problem I'm a bit surprised.


[Bug libquadmath/55225] Fail to build lgammaq.c from trunk with mingw-w64

2012-11-21 Thread i.nixman at gmail dot com


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



--- Comment #2 from niXman i.nixman at gmail dot com 2012-11-21 08:09:40 UTC 
---

(In reply to comment #1)

 Fixed in mingw-w64 trunk



Strange that the mingw-w64 developers didn't report that the bug is fixed.


[Bug other/55354] [asan] by default, the asan run-time should be linked statically, not dynamically

2012-11-21 Thread jakub at gcc dot gnu.org


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



--- Comment #19 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
08:40:52 UTC ---

(In reply to comment #18)

 For actual ThreadSanitizer runtime -fPIC -ftls-model=initial-exec causes

 degradation of generated code. Linker emits the same tls access code in all

 cases, but the compiler generates worse code.



-fPIC -ftls-model=initial-exec is by definition almost equivalent to -fPIE, the

only exceptions are:

1) -fPIE code is allowed to assume globally visible symbols aren't interposed

2) if TLS vars are defined locally (or hidden visibility), then local-exec

   model can be used instead of initial-exec (one less dereference)



As for 2), I've explained already that by linking -fPIC code into the

executable if the TLS var is defined in the executable, linker TLS transition

transform all other TLS models (even global and local dynamic) into local-exec,

just might result in some nops or for IE-LE setting of a register to an

immediate and using that register as opposed to just using the immediate in the

%fs: prefixed insn.



And for 1), for the fast path, for any symbols on the fast path that shouldn't

be interposeable and that are defined in libtsan, you should be able to just

use visibility attributes and get the same effect.



-fPIE flag simply isn't usable for a library that is to be used also by shared

libraries.  How do you link -fsanitize=thread shared libraries anyway?  Just

don't link libtsan in for -static-libtsan, and rely on the executable being

linked against it?  Such libraries will fail to link with -Wl,-z,defs ...

Of course, having multiple tsan TLS roots in the same process isn't a good idea

either (which is why I think we can't default to -static-libtsan).


[Bug other/55354] [asan] by default, the asan run-time should be linked statically, not dynamically

2012-11-21 Thread dvyukov at google dot com


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



--- Comment #20 from Dmitry Vyukov dvyukov at google dot com 2012-11-21 
09:04:07 UTC ---

(In reply to comment #19)

 (In reply to comment #18)

  For actual ThreadSanitizer runtime -fPIC -ftls-model=initial-exec causes

  degradation of generated code. Linker emits the same tls access code in all

  cases, but the compiler generates worse code.

 

 -fPIC -ftls-model=initial-exec is by definition almost equivalent to -fPIE, 
 the

 only exceptions are:

 1) -fPIE code is allowed to assume globally visible symbols aren't interposed

 2) if TLS vars are defined locally (or hidden visibility), then local-exec

model can be used instead of initial-exec (one less dereference)





What I see is that it also affect code generation (register allocation). Do we

need to file a bug on that?





 As for 2), I've explained already that by linking -fPIC code into the

 executable if the TLS var is defined in the executable, linker TLS transition

 transform all other TLS models (even global and local dynamic) into 
 local-exec,

 just might result in some nops or for IE-LE setting of a register to an

 immediate and using that register as opposed to just using the immediate in 
 the

 %fs: prefixed insn.

 

 And for 1), for the fast path, for any symbols on the fast path that shouldn't

 be interposeable and that are defined in libtsan, you should be able to just

 use visibility attributes and get the same effect.

 

 -fPIE flag simply isn't usable for a library that is to be used also by shared

 libraries.  How do you link -fsanitize=thread shared libraries anyway?  Just

 don't link libtsan in for -static-libtsan, and rely on the executable being

 linked against it?





Yes, we rely on the library being linked into the executable, because we want

the runtime be linked statically.

For dynamic libraries that are loaded into a non-instrumented executable (e.g.

swig so preloaded into python process), we statically link the tsan runtime

into the so.







 Such libraries will fail to link with -Wl,-z,defs ...

 Of course, having multiple tsan TLS roots in the same process isn't a good 
 idea

 either (which is why I think we can't default to -static-libtsan).


[Bug tree-optimization/55424] New: [4.8 Regression]gcc.dg/uninit-pred-8_b.c bogus warning line 23 on ARM/Cortex-M0/-Os

2012-11-21 Thread amker.cheng at gmail dot com


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



 Bug #: 55424

   Summary: [4.8 Regression]gcc.dg/uninit-pred-8_b.c bogus warning

line 23 on ARM/Cortex-M0/-Os

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: minor

  Priority: P3

 Component: tree-optimization

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

ReportedBy: amker.ch...@gmail.com





The test case require optimization level -O2 and it passes on ARM/cortex-m0

with -O2, but the failure with -Os does reveal potential bug in

tree-ssa-uninit.c



Test command line:

arm-none-eabi-gcc ./uninit-pred-8_b.c  -fno-diagnostics-show-caret  

-Wuninitialized -fno-tree-dominator-opts -S-mthumb -mcpu=cortex-m0 -Os -o

uninit-pred-8_b.s

The warning info:

.../trunk-orig/gcc/gcc/testsuite/gcc.dg/uninit-pred-8_b.c: In function 'foo':

.../trunk-orig/gcc/gcc/testsuite/gcc.dg/uninit-pred-8_b.c:23:11: warning: 'v'

may be used uninitialized in this function [-Wmaybe-uninitialized]

.../trunk-orig/gcc/gcc/testsuite/gcc.dg/uninit-pred-8_b.c: In function 'foo_2':

.../trunk-orig/gcc/gcc/testsuite/gcc.dg/uninit-pred-8_b.c:42:11: warning: 'v'

may be used uninitialized in this function [-Wmaybe-uninitialized]



This failure occurs after checking in r193687. The patch prefers to generate

branches on ARM/cortex-m0.



After investigating tree dump of tree-ssa-uninit.c, I think:



tree-ssa-uninit.c computes control dependent chain for uses/def of variable and

checks whether each use is guarded by def. It has a upper bound on the number

of control dependent chains(MAX_NUM_CHAINS==8) and just retreat to false

warning if the number of chains exceeds MAX_NUM_CHAINS. In our scenario, the

number of chains exceeds MAX_NUM_CHAINS because we prefer short circuit now,

resulting in false warning information. These false warning cannot be fully

removed if the MAX_NUM_CHAINS exists, but we can improve it in following way:

There are lots of invalid control dependent chains computed in

tree-ssa-uninit.c now and should be pruned. I have already implemented a quick

fix and it works for our scenario.



I am not sure it should be fixed in this way, so please comments if you have

any opinions.



Thanks



Dump of tree-ssa-uninit.c:



;; Function foo (foo, funcdef_no=0, decl_uid=4065, cgraph_uid=0)





Use in stmt v_24 = PHI v_25(8), v_1(9)

is guarded by :

 (.NOT.) if (m_6(D) != 0)

Operand defs of phi v_1 = PHI v_9(D)(6), r_7(D)(4), r_7(D)(2), r_7(D)(5)

is guarded by :

 (.NOT.) if (n_5(D) = 9)

(.AND.)

 (.NOT.) if (m_6(D)  100)

(.AND.)

if (r_7(D) = 19)

(.OR.)

if (n_5(D) = 9)

(.OR.)

 (.NOT.) if (n_5(D) = 9)

(.AND.)

 (.NOT.) if (m_6(D)  100)

(.AND.)

 (.NOT.) if (r_7(D) = 19)

(.AND.)

if (l_8(D) != 0)

foo (int n, int l, int m, int r)

{

  int v;

  int g.1;

  int g.0;



  bb 2:

  if (n_5(D) = 9)

goto bb 7;

  else

goto bb 3;



  bb 3:

  if (m_6(D)  100)

goto bb 18;

  else

goto bb 4;



  bb 4:

  if (r_7(D) = 19)

goto bb 7;

  else

goto bb 5;



  bb 5:

  if (l_8(D) != 0)

goto bb 7;

  else

goto bb 6;



  bb 6:



  bb 7:

  # v_1 = PHI v_9(D)(6), r_7(D)(4), r_7(D)(2), r_7(D)(5)

  if (m_6(D) != 0)

goto bb 8;

  else

goto bb 9;



  bb 8:

  # v_25 = PHI v_1(7), v_22(18)

  g.0_11 = g;

  g.1_12 = g.0_11 + 1;

  g = g.1_12;

  goto bb 10;



  bb 9:

  bar ();



  bb 10:

  # v_24 = PHI v_25(8), v_1(9)

  if (n_5(D) = 9)

goto bb 14;

  else

goto bb 11;



  bb 11:

  if (m_6(D)  100)

goto bb 14;

  else

goto bb 12;



  bb 12:

  if (r_7(D) = 19)

goto bb 14;

  else

goto bb 16;



  bb 13:

  if (m_6(D)  100)

goto bb 15;

  else

goto bb 16;



  bb 14:

  blah (v_24);

  if (n_5(D) = 9)

goto bb 15;

  else

goto bb 13;



  bb 15:

  blah (v_24);

  goto bb 17;



  bb 16:

  if (r_7(D) = 9)

goto bb 15;

  else

goto bb 17;



  bb 17:

  return 0;



  bb 18:

  # v_22 = PHI r_7(D)(3)

  goto bb 8;



}


[Bug other/55354] [asan] by default, the asan run-time should be linked statically, not dynamically

2012-11-21 Thread jakub at gcc dot gnu.org


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



--- Comment #21 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
09:23:56 UTC ---

(In reply to comment #20)

 What I see is that it also affect code generation (register allocation). Do we

 need to file a bug on that?



If you see a code generation difference even with -ftls-model=local-exec -fPIC

vs. -fPIE, then it must mean you don't have visibility attributes on the

symbols used in the fast path.  For initial-exec, the RA effects should be

minimal, the TLS offset load from got is usually very close to the actual TLS

memory load (or lea), and thus it will just pick up some short lived scratch

register.  Generally in GCC, -fPIE sets flag_pic and not flag_shlib, while

-fPIC sets flag_pic and flag_shlib.  flag_pic is about whether position

independent code needs to be generated, flag_shlib is about whether locally

defined symbols can be interposed (plus it affects TLS model default choice).



 For dynamic libraries that are loaded into a non-instrumented executable (e.g.

 swig so preloaded into python process), we statically link the tsan runtime

 into the so.



And you don't get linker errors from that?  That must be by pure luck.


ARM/NEON: vld1q_dup_s64 builtin

2012-11-21 Thread Manjunath Matti
Hi,

I have encountered a following ICE on arm big endian target

{{{
neon-vld1_dupQ.c: In function ‘main’:
neon-vld1_dupQ.c:24:1: error: unrecognizable insn:
(insn 94 93 31 (set (subreg:DI (reg:V2DI 95 d16 [orig:137 D.14400 ] [137]) 0)
(subreg:DI (reg:V2DI 95 d16 [orig:137 D.14400 ] [137]) 8))
/home/armbe/toolchain/armeb-tools/bin/../lib/gcc/armeb-montavista-linux-gnueabi/4.7.0/include/arm_neon.h:8214
-1
 (nil))
neon-vld1_dupQ.c:24:1: internal compiler error: in extract_insn, at recog.c:2123
Please submit a full bug report,
}}}

My initial investigation shows that the following patch (split insn)
http://gcc.gnu.org/ml/gcc-patches/2012-05/msg01131.html is causing
this failure.
I think the CANNOT_CHANGE_MODE_CLASS macro is present and also plays a
role in not allowing the mov of DImode in this case.

If I revert the patch then I do not encounter this problem. Could you help
me with the pointers to solve this problem.

Regards,
Manjunath S Matti.


[Bug libgomp/55411] OMP threads lose their OMP_WAIT_POLICY when another OMP thread gets destructed

2012-11-21 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |ASSIGNED

   Last reconfirmed||2012-11-21

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

   |gnu.org |

 Ever Confirmed|0   |1



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
10:31:33 UTC ---

Created attachment 28752

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

gcc48-pr55411.patch



Untested fix.


[Bug c/55420] Gcc produces an internal compiler error (nested function with variably modified return)

2012-11-21 Thread mikpe at it dot uu.se


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



--- Comment #1 from Mikael Pettersson mikpe at it dot uu.se 2012-11-21 
10:34:00 UTC ---

ICEs gcc-4.6, but not 4.7 or 4.8.


[Bug c++/55423] internal compiler error: tree check: expected string_cst, have error_mark in finish_static_assert, at cp/semantics.c:5170

2012-11-21 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 CC||jakub at gcc dot gnu.org

 Resolution||FIXED



--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
10:39:31 UTC ---

Should be fixed by http://gcc.gnu.org/viewcvs?root=gccview=revrev=190182 .


[Bug c++/55419] [4.7/4.8 Regression] ICE in gimplify_init_ctor_preeval, at gimplify.c:3587

2012-11-21 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org,

   ||jason at gcc dot gnu.org

   Target Milestone|--- |4.8.0

Summary|[4.8 Regression] ICE in |[4.7/4.8 Regression] ICE in

   |gimplify_init_ctor_preeval, |gimplify_init_ctor_preeval,

   |at gimplify.c:3587  |at gimplify.c:3587



--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
11:08:46 UTC ---

Reduced testcase:

struct P

{

  P () = default;

  explicit constexpr P (int x) : p (x) {}

  int p;

};



struct Q

{

  constexpr Q () : q (0x7f) {}

  int q;

};



struct R

{

  Q q;

  P p;

};



void

foo (R *x)

{

  *x = {};

}



Started ICEing with http://gcc.gnu.org/viewcvs?root=gccview=revrev=177997


[Bug c++/55419] [4.7/4.8 Regression] ICE in gimplify_init_ctor_preeval, at gimplify.c:3587

2012-11-21 Thread jakub at gcc dot gnu.org


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



--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
11:18:22 UTC ---

   /* We always set TREE_SIDE_EFFECTS so that expand_expr does not

  ignore the TARGET_EXPR.  If there really turn out to be no

  side-effects, then the optimizer should be able to get rid of

  whatever code is generated anyhow.  */

   TREE_SIDE_EFFECTS (t) = 1;

+  if (literal_type_p (type))

+TREE_CONSTANT (t) = TREE_CONSTANT (value);



So we end up with TARGET_EXPR with TREE_SIDE_EFFECTS, but TREE_CONSTANT set

too, which is what the gimplifier is complaining about.  constants shouldn't

have side-effects.  If this is some trick internal to the C++ FE, then at least

the genericizer should drop TREE_CONSTANT from TARGET_EXPRs with

TREE_SIDE_EFFECTS set that are passed down to the middle-end.


[Bug middle-end/54630] [4.8 Regression] GCC 4.8 --enable-languages=c build fails: Undefined symbols: ___cxa_guard_acquire and ___cxa_guard_release

2012-11-21 Thread redi at gcc dot gnu.org


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



Jonathan Wakely redi at gcc dot gnu.org changed:



   What|Removed |Added



   Severity|blocker |normal



--- Comment #16 from Jonathan Wakely redi at gcc dot gnu.org 2012-11-21 
11:19:54 UTC ---

When LINKER=$(CXX) you do not link with a C++ compiler you still link with

the linker, ld, but the g++ driver passes it additional libs including

-lstdc++. That means you can't fine-tune which libstdc++ is used, defeating the

purpose of --with-host-libstdcxx. To allow fine-tuning the libs, you need the

additional libs to not be used, which implies not linking with g++.



If you use --with-host-libstdcxx then you need to get the argument right.



(In reply to comment #8)

 After that, I'll try to use a newer GCC on CentoS Linux i386 and try again 
 with

 --with-host-libstdcxx='-static-libgcc -static-libstdc++ -lm'.  This seems to 
 be

 the more modern equivalent on more recent gcc/g++ compilers. 



No, it's not equivalent, -static-libstdcxx does not imply -lstdc++, which is

why you get missing symbols.



Why not just use the Sourcery configuration that works?


[Bug c/55422] gcc does not diagnose change of linkage for a function.

2012-11-21 Thread mpolacek at gcc dot gnu.org


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



Marek Polacek mpolacek at gcc dot gnu.org changed:



   What|Removed |Added



 CC||mpolacek at gcc dot gnu.org



--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org 2012-11-21 
11:29:41 UTC ---

GCC 4.4.3 is unsupported.  But the behavior is the same as with trunk GCC.


[Bug c++/55425] New: constexpr does not work in many situations (both built-in and user supplied)

2012-11-21 Thread M8R-ug85cr at mailinator dot com


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



 Bug #: 55425

   Summary: constexpr does not work in many situations  (both

built-in and user supplied)

Classification: Unclassified

   Product: gcc

   Version: 4.7.1

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c++

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

ReportedBy: m8r-ug8...@mailinator.com





constexpr expressions/functions do not work in many cases because of compiler

wrongly interpreting the code. Seen in gcc-MinGW 4.7.0 and 4.7.1.



Situation 1: __func__

--



A return statement is not a return statement if the returned value is __func__

(also true for non-standard identifiers like __PRETTY_FUNCTION__).



// good

//static const char func[] = function-name;

//constexpr const char* x() { return func; }



// bad

constexpr const char* x() { return __func__;}



int main() { __builtin_puts(x()); return 0; }



Compiler output:



error: body of constexpr function 'constexpr const char* x()' not a

return-statement





Cross-reference to corresponding MinGW ticket:

http://sourceforge.net/tracker/index.php?func=detailaid=3471328group_id=2435atid=102435







Situation 2: user literals

--



The (obviously constant) string that the compiler builds from the literal is

not constant according to the compiler:



#include stdio.h



constexpr int valid_bin_number(const char* c) { return *c ? ((*c == '1' || *c

== '0') ? valid_bin_number(c+1) : false ) : true; }



unsigned int operator _bin(const char* str)

{

static_assert(valid_bin_number(str), not a binary number);



unsigned int ret = 0;



for(unsigned int i = 0; str[i] != '\0'; ++i)

{

char digit = str[i];

ret = ret * 2 + (digit - '0');

}

return ret;

}



int main()

{

unsigned int a = 1_bin;

(void) a;

return 0;

}



Compiler output:



In function 'unsigned int operator _bin(const char*)':

error: non-constant condition for static assertion

error: 'str' is not a constant expression



Cross-reference to corresponding MinGW ticket:

http://sourceforge.net/tracker/?func=detailatid=102435aid=3582841group_id=2435







Situation 3: __m128i type

--



Assigning a literal value to a constexpr __m128 fails because the literal is

not a literal.



#include emmintrin.h



constexpr unsigned int a[] = { 5, 3};  // works (of course)

constexpr floatb[] = { 1.1, 3.7 }; // works, and no warning?!



__m128i   c[] = { { 0x55633cd9, 0x88ca7a96 }, { 0x0ed8c2a8,

0x7795b179 } };

const __m128i d[] = { { 0x55633cd9, 0x88ca7a96 }, { 0x0ed8c2a8,

0x7795b179 } };

static const __m128i  e[] = { { 0x55633cd9, 0x88ca7a96 }, { 0x0ed8c2a8,

0x7795b179 } };

namespace { const __m128i f[] = { { 0x55633cd9, 0x88ca7a96 }, { 0x0ed8c2a8,

0x7795b179 } }; }

constexpr __m128i g[] = { { 0x55633cd9, 0x88ca7a96 }, { 0x0ed8c2a8,

0x7795b179 } };//  fails



int main() { return 0; }





Compiler output:



error: the type 'const __m128i [] {aka const __vector(2) long long int []}' of

constexpr variable 'g' is not literal


[Bug libquadmath/55225] Fail to build lgammaq.c from trunk with mingw-w64

2012-11-21 Thread ktietz at gcc dot gnu.org


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



Kai Tietz ktietz at gcc dot gnu.org changed:



   What|Removed |Added



 Status|RESOLVED|NEW

   Last reconfirmed||2012-11-21

 CC||ktietz at gcc dot gnu.org

 Resolution|WONTFIX |

 Ever Confirmed|0   |1



--- Comment #3 from Kai Tietz ktietz at gcc dot gnu.org 2012-11-21 11:53:53 
UTC ---

(In reply to comment #2)

 Strange that the mingw-w64 developers didn't report that the bug is fixed.



It isn't fixed.  We added to mingw-w64's trunk the POSIX feature of signgam. 

By this reason things are working again, if you are using recent mingw-w64's

trunk version.

I re-open bug as there is actual a fix pending


[Bug c++/55425] constexpr does not work in many situations (both built-in and user supplied literals)

2012-11-21 Thread redi at gcc dot gnu.org


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



--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org 2012-11-21 
12:12:19 UTC ---

(In reply to comment #0)

 

 A return statement is not a return statement if the returned value is __func__

 (also true for non-standard identifiers like __PRETTY_FUNCTION__).

 

 // good

 //static const char func[] = function-name;

 //constexpr const char* x() { return func; }

 

 // bad

 constexpr const char* x() { return __func__;}

 

 int main() { __builtin_puts(x()); return 0; }



The standard says __func__ is a function-local variable, defined as if by



constexpr const char* x() {

  static const char __func__[] = function-name ;

  return __func__;

}



Clearly this is not a valid constexpr function.

Changing this would be an extension.





 Situation 2: user literals

 --

 

 The (obviously constant) string that the compiler builds from the literal is

 not constant according to the compiler:

 

 #include stdio.h

 

 constexpr int valid_bin_number(const char* c) { return *c ? ((*c == '1' || *c

 == '0') ? valid_bin_number(c+1) : false ) : true; }

 

 unsigned int operator _bin(const char* str)

 {

 static_assert(valid_bin_number(str), not a binary number);



'str' is not a constant expression, so 'valid_bin_number(str)' is not a

constant expression either. This is not a bug.





 Situation 3: __m128i type

 --

 

 Assigning a literal value to a constexpr __m128 fails because the literal is

 not a literal.



No, the error says __m128 is not a literal type, which I assume is true.

Changing that would be an enhancement request.


[Bug c++/55425] constexpr does not work in many situations (both built-in and user supplied literals)

2012-11-21 Thread redi at gcc dot gnu.org


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



--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org 2012-11-21 
12:19:06 UTC ---

(In reply to comment #1)

  Situation 3: __m128i type

  --

  

  Assigning a literal value to a constexpr __m128 fails because the literal is

  not a literal.

 

 No, the error says __m128 is not a literal type, which I assume is true.

 Changing that would be an enhancement request.



With G++ 4.8 __m128i is a literal type, so this example works.


[Bug middle-end/55421] [4.8 Regression] ICE in adjust _address_1, at emit-rtl.c:2180

2012-11-21 Thread danglin at gcc dot gnu.org


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



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



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||FIXED



--- Comment #2 from John David Anglin danglin at gcc dot gnu.org 2012-11-21 
12:40:20 UTC ---

Fixed.


[Bug c++/55425] constexpr does not work in many situations (both built-in and user supplied literals)

2012-11-21 Thread jakub at gcc dot gnu.org


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



--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
12:40:29 UTC ---

1) is not valid constexpr IMHO, as the standard says that __func__ works as if

   static const char __func__[] = function-name;

   has been provided, but when it is provided, it is not valid constexpr.

2) I don't see why you think you could use something like this at all.

   You are defining a non-constexpr operator , so str there definitely isn't

   pointer to a string literal, it is a standalone function that might be

   inlined if the inliner choses so.  So it is obvious the static_assert

   which must be evaluated before the optimizations, without depending on

   whether the function is inlined or not, must fail.

   You want something like:

constexpr int

cstrlen (const char *c)

{

  return *c ? cstrlen (c + 1) + 1 : 0;

}



constexpr unsigned int

bin_number (const char *c)

{

  return *c ? (*c == '1' ? (1U  cstrlen (c + 1)) : *c == '0' ? 0 : throw 0) +

bin_number (c + 1) : 0;

}



constexpr unsigned int

operator _bin (const char *c)

{

  return bin_number (c);

}



int

main ()

{

  constexpr unsigned int a = 1_bin;

  (void) a;

  return 0;

}



instead, then you can verify it the same at compile time.


[Bug c/55422] gcc does not diagnose change of linkage for a function.

2012-11-21 Thread mpolacek at gcc dot gnu.org


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



--- Comment #3 from Marek Polacek mpolacek at gcc dot gnu.org 2012-11-21 
12:44:31 UTC ---

Looks like the first example is just an undefined behavior in which case GCC

isn't obliged to issue an error.


[Bug tree-optimization/54471] [4.8 Regression] FAIL: gcc.dg/sms-8.c execution test

2012-11-21 Thread danglin at gcc dot gnu.org


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



--- Comment #3 from John David Anglin danglin at gcc dot gnu.org 2012-11-21 
13:01:33 UTC ---

Created attachment 28753

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

Tree dump


[Bug tree-optimization/54471] [4.8 Regression] FAIL: gcc.dg/sms-8.c execution test

2012-11-21 Thread danglin at gcc dot gnu.org


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



--- Comment #4 from John David Anglin danglin at gcc dot gnu.org 2012-11-21 
13:02:32 UTC ---

Created attachment 28754

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

Tree dump


[Bug tree-optimization/55424] [4.8 Regression]gcc.dg/uninit-pred-8_b.c bogus warning line 23 on ARM/Cortex-M0/-Os

2012-11-21 Thread pinskia at gcc dot gnu.org


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



Andrew Pinski pinskia at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||DUPLICATE



--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2012-11-21 
13:07:00 UTC ---

The issue is the same as PR 49498.



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


[Bug tree-optimization/49498] [4.7/4.8 Regression]: gcc.dg/uninit-pred-8_b.c bogus warning line 20

2012-11-21 Thread pinskia at gcc dot gnu.org


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



--- Comment #18 from Andrew Pinski pinskia at gcc dot gnu.org 2012-11-21 
13:07:00 UTC ---

*** Bug 55424 has been marked as a duplicate of this bug. ***


[Bug tree-optimization/54471] [4.8 Regression] FAIL: gcc.dg/sms-8.c execution test

2012-11-21 Thread danglin at gcc dot gnu.org


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



--- Comment #5 from John David Anglin danglin at gcc dot gnu.org 2012-11-21 
13:13:22 UTC ---

Get the same with stage1 compiler.  Maybe this is a HWI32 issue?


[Bug tree-optimization/49498] [4.7/4.8 Regression]: gcc.dg/uninit-pred-8_b.c bogus warning line 20

2012-11-21 Thread amker.cheng at gmail dot com


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



--- Comment #19 from bin.cheng amker.cheng at gmail dot com 2012-11-21 
13:24:02 UTC ---

(In reply to comment #18)

 *** Bug 55424 has been marked as a duplicate of this bug. ***



Just for the record.

If the analysis I gave in Comment #17 is right, this PR reveals another bug in

tree-ssa-uninit.c, apart from the limitation of MAX_NUM_CHAINS, while PR55424

is only about MAX_NUM_CHAINS.


[Bug target/55426] New: gcc.target/arm/neon-vld1_dupQ.c ICEs on armeb

2012-11-21 Thread mmatti.gcc at gmail dot com

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

 Bug #: 55426
   Summary: gcc.target/arm/neon-vld1_dupQ.c ICEs on armeb
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: mmatti@gmail.com
CC: christophe.l...@st.com, ramana.radhakrish...@arm.com
  Host: Scientific Linux 6.3
Target: arm big-endian
 Build: Scientific Linux 6.3


Hi,

I have encountered a following ICE on arm big endian target

{{{
neon-vld1_dupQ.c: In function ‘main’:
neon-vld1_dupQ.c:24:1: error: unrecognizable insn:
(insn 94 93 31 (set (subreg:DI (reg:V2DI 95 d16 [orig:137 D.14400 ] [137]) 0)
(subreg:DI (reg:V2DI 95 d16 [orig:137 D.14400 ] [137]) 8))
/home/armbe/toolchain/armeb-tools/bin/../lib/gcc/armeb-none-linux-gnueabi/4.7.0/include/arm_neon.h:8214
-1
 (nil))
neon-vld1_dupQ.c:24:1: internal compiler error: in extract_insn, at
recog.c:2123
Please submit a full bug report,
}}}

My initial investigation shows that the following patch (split insn)
http://gcc.gnu.org/ml/gcc-patches/2012-05/msg01131.html is causing
this failure.
I think the CANNOT_CHANGE_MODE_CLASS macro is present and also plays a
role in not allowing the mov of DImode in this case.

If I revert the patch then I do not encounter this problem.

I can propose a solution, which may fix this problem.

In case of little endian the compiler generates,

{{{
insn 93 26 94 (set (reg:DI 95 d16 [orig:137 D.14400 ] [137])
(vec_duplicate:DI (mem:DI (reg/f:SI 2 r2 [155]) [0 *(const
__builtin_neon_di[1] *) __a_5+0 S8 A64])))
/home/armbe/toolchain/arm-tools/bin/../lib/gcc/arm-montavista-linux-gnueabi/4.7.0/include/arm_neon.h:8214
1606 {neon_vld1_dupdi}
 (nil))
vld1.64 {d16}, [r2:64]  @ 93neon_vld1_dupdi [length = 4]
(insn 94 93 31 (set (reg:DI 97 d17 [ D.14400+8 ])
(reg:DI 95 d16 [orig:137 D.14400 ] [137]))
/home/armbe/toolchain/arm-tools/bin/../lib/
}}}

But incase of big endian the vmov\t%f0, %e0 is missing there is no
pattern in the neon.md file.
Adding this may solve the problem. Something like this

(define_insn *neon_subreg_di
  [(set (match_operand:DI 0 s_register_operand =w)
   (match_operand:DI 1 s_register_operand w))]
 TARGET_NEON
 vmov\t%1, %0
)

Kindly comment on this patch or could you please help me with the 
pointers to solve this problem.

Regards,
Manjunath S Matti.


[Bug tree-optimization/54471] [4.8 Regression] FAIL: gcc.dg/sms-8.c execution test

2012-11-21 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Target|hppa*-*-* (32-bit)  |

 Status|WAITING |NEW

   Host|hppa*-*-* (32-bit)  |

  Build|hppa*-*-* (32-bit)  |



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
13:36:56 UTC ---

Reproduced with

extern void abort (void);



__attribute__ ((noinline))

unsigned __int128

foo (__int128 ixi, unsigned ctr)

{

  unsigned __int128 irslt = 1;

  __int128 ix = ixi;



  for (; ctr; ctr--)

{

  irslt *= ix;

  ix *= ix;

}



  if (irslt != 14348907)

abort ();

  return irslt;

}



int

main ()

{

  unsigned __int128 res;



  res = foo (3, 4);

  return 0;

}



on x86_64-linux at -O2, seems to be a VRP bug.


[Bug libquadmath/55225] Fail to build lgammaq.c from trunk with mingw-w64

2012-11-21 Thread burnus at gcc dot gnu.org


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



--- Comment #4 from Tobias Burnus burnus at gcc dot gnu.org 2012-11-21 
13:46:41 UTC ---

Author: burnus

Date: Wed Nov 21 13:46:34 2012

New Revision: 193695



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

Log:

2012-11-21  Tobias Burnus  bur...@net-b.de



PR libquadmath/55225

* math/lgammaq.c (lgammaq): Use local variable if

math.h does not provide signgam.

* acinclude.m4 (LIBQUAD_CHECK_MATH_H_SIGNGAM): New check.

* configure.ac: Use it.

* configure: Regenerate.

* config.h.in: Regenerate.





Modified:

trunk/libquadmath/ChangeLog

trunk/libquadmath/acinclude.m4

trunk/libquadmath/config.h.in

trunk/libquadmath/configure

trunk/libquadmath/configure.ac

trunk/libquadmath/math/lgammaq.c


[Bug libquadmath/55225] Fail to build lgammaq.c from trunk with mingw-w64

2012-11-21 Thread burnus at gcc dot gnu.org


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



Tobias Burnus burnus at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 CC||burnus at gcc dot gnu.org

 Resolution||FIXED



--- Comment #5 from Tobias Burnus burnus at gcc dot gnu.org 2012-11-21 
13:48:48 UTC ---

FIXED on the trunk (4.8), which was only affected.



While POSIX requires that signgam is used for lgamma and, hence, math.h

includes it. C99 doesn't have signgam.



Thus, even if MinGW-w64 now supports it, a configure check makes sense as other

systems might not (yet?) support it.


[Bug c++/55425] constexpr does not work in many situations (both built-in and user supplied literals)

2012-11-21 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
13:50:43 UTC ---

Or more efficiently

constexpr unsigned int

bin_number (const char *c, unsigned int x)

{

  return *c ? bin_number (c + 1, (x  1) + (*c == '0' || *c == '1' ? *c - '0'

: throw 0)) : x;

}



constexpr unsigned int

operator _bin (const char *c)

{

  return bin_number (c, 0);

}


[Bug tree-optimization/54471] [4.8 Regression] FAIL: gcc.dg/sms-8.c execution test

2012-11-21 Thread jakub at gcc dot gnu.org


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



--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
13:55:59 UTC ---

Caused by http://gcc.gnu.org/viewcvs?root=gccview=revrev=190125


[Bug c++/55418] Valgrind: Conditional jump or move depends on uninitialised value(s) in implicitly_declare_fn() method.c:1623

2012-11-21 Thread markus at trippelsdorf dot de


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



--- Comment #1 from Markus Trippelsdorf markus at trippelsdorf dot de 
2012-11-21 14:08:12 UTC ---

The following trivial patch fixes the issue:



diff --git a/gcc/cp/method.c b/gcc/cp/method.c

index 6dcb63a..3cb4ace 100644

--- a/gcc/cp/method.c

+++ b/gcc/cp/method.c

@@ -1518,7 +1518,7 @@ implicitly_declare_fn (special_function_kind kind, tree

type,

   tree name;

   HOST_WIDE_INT saved_processing_template_decl;

   bool deleted_p;

-  bool trivial_p;

+  bool trivial_p = false;

   bool constexpr_p;



   /* Because we create declarations for implicitly declared functions


[Bug middle-end/55407] stack-buffer-overflow in compute_working_sets

2012-11-21 Thread hjl.tools at gmail dot com


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



H.J. Lu hjl.tools at gmail dot com changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||DUPLICATE



--- Comment #1 from H.J. Lu hjl.tools at gmail dot com 2012-11-21 14:28:00 
UTC ---

Dup.



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


[Bug gcov-profile/55417] [4.8 Regression] AddressSanitizer reports stack-buffer-overflow in profiling code

2012-11-21 Thread hjl.tools at gmail dot com


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



H.J. Lu hjl.tools at gmail dot com changed:



   What|Removed |Added



 CC||hjl.tools at gmail dot com



--- Comment #3 from H.J. Lu hjl.tools at gmail dot com 2012-11-21 14:28:01 
UTC ---

*** Bug 55407 has been marked as a duplicate of this bug. ***


[Bug gcov-profile/55417] [4.8 Regression] AddressSanitizer reports stack-buffer-overflow in profiling code

2012-11-21 Thread hjl.tools at gmail dot com


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



H.J. Lu hjl.tools at gmail dot com changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2012-11-21

 Ever Confirmed|0   |1



--- Comment #4 from H.J. Lu hjl.tools at gmail dot com 2012-11-21 14:29:02 
UTC ---

There is a simple testcase in PR 55407.


[Bug gcov-profile/55417] [4.8 Regression] AddressSanitizer reports stack-buffer-overflow in profiling code

2012-11-21 Thread markus at trippelsdorf dot de


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



--- Comment #5 from Markus Trippelsdorf markus at trippelsdorf dot de 
2012-11-21 14:34:24 UTC ---

Teresa, your patch fixes the issue.

Happy Thanksgiving.


[Bug fortran/55427] New: ICE class pointer

2012-11-21 Thread valeryweber at hotmail dot com

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

 Bug #: 55427
   Summary: ICE class pointer
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: valerywe...@hotmail.com


Dear All

Is that known?

gcc version 4.8.0 20121121 (experimental) (GCC) 

Valery

!
MODULE base_types
  IMPLICIT NONE
  TYPE :: base_type
  END TYPE base_type
  TYPE, extends( base_type ) :: integer_type
 integer :: i
  END TYPE integer_type
contains
  FUNCTION points_to ( this ) RESULT( reslt )
CLASS( base_type ), DIMENSION( : ), TARGET :: this
CLASS( base_type ), DIMENSION( : ), POINTER :: reslt
reslt = this
  END FUNCTION points_to
END MODULE base_types

program bug
  use base_types
  implicit none
  CLASS( base_type ), POINTER, DIMENSION( : ) :: reslt
  CLASS( base_type ), ALLOCATABLE, DIMENSION( : ) :: val
  type(integer_type) :: i
  i%i=12345
  ALLOCATE( val(10), source=i )
  reslt = points_to ( val )
  write(*,*) associated(reslt)
  select type( p= reslt )
  type is(integer_type)
 write(*,*) 'p=',p(2)%i
  class default
 stop 666
  end select
end program bug
!=
 gfortran-trunk bug4.f90 
bug4.f90: In function ‘bug’:
bug4.f90:24:0: internal compiler error: in fold_convert_loc, at
fold-const.c:1857
   reslt = points_to ( val )
 ^
0x83cb322 fold_convert_loc(unsigned int, tree_node*, tree_node*)
../../gcc-trunk/gcc/fold-const.c:1856
0x81eff63 gfc_trans_pointer_assignment(gfc_expr*, gfc_expr*)
../../gcc-trunk/gcc/fortran/trans-expr.c:6350
0x81f34a5 gfc_trans_class_assign(gfc_expr*, gfc_expr*, gfc_exec_op)
../../gcc-trunk/gcc/fortran/trans-expr.c:888
0x81b1dda trans_code
../../gcc-trunk/gcc/fortran/trans.c:1322
0x81dcf17 gfc_generate_function_code(gfc_namespace*)
../../gcc-trunk/gcc/fortran/trans-decl.c:5349
0x816f1c5 translate_all_program_units
../../gcc-trunk/gcc/fortran/parse.c:4467
0x816f1c5 gfc_parse_file()
../../gcc-trunk/gcc/fortran/parse.c:4681
0x81acbca gfc_be_parse_file
../../gcc-trunk/gcc/fortran/f95-lang.c:191
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 tree-optimization/54471] [4.8 Regression] FAIL: gcc.dg/sms-8.c execution test

2012-11-21 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Status|NEW |ASSIGNED

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

   |gnu.org |



--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
14:42:13 UTC ---

Created attachment 28755

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

gcc48-pr54471.patch



Untested fix.  I believe the bug is in invalid canonicalization.  When

sizem1 is { -1, -1 } double_int, sizem1 + double_int_one is { 0, 0 }, as it

wrapped, instead of { 0, 0, 1, 0 } quad_int.  And if min0 or min1 is zero, then

size - min{0,1} is also zero, and so is very likely smaller than max{0,1}

(unless min{0,1} == max{0,1}), but we still don't want to canonicalize that

to signed.  IMHO testing min2.is_zero () is sufficient, as min0 or min1 should

be a valid double_int in the range 0 to { -1, -1 }, which is always smaller

than the maximum unsigned integer + 1 in infinite precision and thus min2

should never be zero, unless size overflowed to 0 and min{0,1} is zero.


[Bug c/55428] New: -mms-bitfields hides -mno-align-double option

2012-11-21 Thread kasberger at heidenhain dot de


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



 Bug #: 55428

   Summary: -mms-bitfields hides -mno-align-double option

Classification: Unclassified

   Product: gcc

   Version: 4.6.2

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c

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

ReportedBy: kasber...@heidenhain.de





i686-pc-linux-gbu-gcc -mno-align-double -mms-bitfields test.cpp



(-mno-align-double is the equivalent to /zp4)



This command line ignores the -mno-align-double option.

With -mno-align-double standalone it will do the correct double alignments but

no the ms bitfield alignment (What is expected)

If I add -mms-bitfields the alignment for bitfields will be correct but the

-mno-align-double is now gone



Here the program I have tested. Is it possible to achieve binary compatibility

to ms compiler with option /zp4 enabled





i686-pc-linux-gbu-gcc -mno-align-double -mms-bitfields test.cpp

test.cpp:48:58: warning: large integer implicitly truncated to unsigned type

[-Woverflow]

test.cpp:54:54: warning: large integer implicitly truncated to unsigned type

[-Woverflow]



i686-pc-linux-gbu-gcc -mno-align-double test.cpp

test.cpp:52:53: warning: large integer implicitly truncated to unsigned type

[-Woverflow]

test.cpp:58:53: warning: large integer implicitly truncated to unsigned type

[-Woverflow]



i686-pc-linux-gbu-gcc -mms-bitfields test.cpp

test.cpp:48:58: warning: large integer implicitly truncated to unsigned type

[-Woverflow]

test.cpp:54:54: warning: large integer implicitly truncated to unsigned type

[-Woverflow]







// 8

typedef struct _jhtest1 {

 unsigned long bf_1 : 12; 

 unsigned long : 0; 

 unsigned long bf_2 : 12; 

 } jhtest1;



//??

typedef struct _jhtest2 {

  char foo : 4; 

  short : 0; 

  char bar; 

 } jhtest2;



//??

typedef struct _jhtest3 {

 char foo : 4; 

 short : 0; 

 double bar; 

 } jhtest3;



//4

typedef struct _jhtest4 {

char foo : 6; 

long : 0; 

} jhtest4;



// 2

typedef struct _jhtest5 {

  char foo; 

  long : 0; 

  char bar; 

 } jhtest5;



typedef struct _jhtest {

double xx;

char y;

double yy;

long z;

} jhtest;







unsigned char jh_double = (sizeof (double) == 8 )?1:111;



unsigned char jh_test0 = (sizeof (jhtest) == (8*2+8) )?1:111;



unsigned char jh_test1 = (sizeof (jhtest1) == 8 )?1:111;



unsigned char jh_test2 = (sizeof (jhtest2) == 4 )?1:111;  // VC++



unsigned char jh_test3 = (sizeof (jhtest3) == 12 )?1:111;



unsigned char jh_test4 = (sizeof (jhtest4) == 4 )?1:111;



unsigned char jh_test5 = (sizeof (jhtest5) == 2 )?1:111; // VC++



int main()

{

}


[Bug gcov-profile/55417] [4.8 Regression] AddressSanitizer reports stack-buffer-overflow in profiling code

2012-11-21 Thread jakub at gcc dot gnu.org


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



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
15:04:58 UTC ---

Author: jakub

Date: Wed Nov 21 15:04:45 2012

New Revision: 193697



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

Log:

PR gcov-profile/55417

* profile.c (compute_working_sets): Check index first

to avoid out-of-bounds array access.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/profile.c


[Bug c/55428] -mms-bitfields hides -mno-align-double option

2012-11-21 Thread mikpe at it dot uu.se


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



Mikael Pettersson mikpe at it dot uu.se changed:



   What|Removed |Added



 CC||mikpe at it dot uu.se



--- Comment #1 from Mikael Pettersson mikpe at it dot uu.se 2012-11-21 
15:20:41 UTC ---

Possibly related to PR52991 (-mms-bitfields breaks attribute((packed))).


[Bug libstdc++/55429] New: new UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler on darwin

2012-11-21 Thread howarth at nitro dot med.uc.edu


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



 Bug #: 55429

   Summary: new UNRESOLVED:

20_util/enable_shared_from_this/cons/constexpr.cc

scan-assembler on darwin

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: libstdc++

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

ReportedBy: howa...@nitro.med.uc.edu





At r193675, a new set of failures appear in the x86_64-apple-darwin12 testsuite

results at both -m32 and -m64...



UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexIfE4realB5cxx11Ev

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexIdE4realB5cxx11Ev

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexI[eg]E4realB5cxx11Ev

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexIiE4realB5cxx11Ev

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexIfE4imagB5cxx11Ev

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexIdE4imagB5cxx11Ev

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexI[eg]E4imagB5cxx11Ev

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexIiE4imagB5cxx11Ev



Compiler version: 4.8.0 20121120 (experimental) (GCC) 

Platform: x86_64-apple-darwin12.2.0

configure flags: --prefix=/sw --prefix=/sw/lib/gcc4.8 --mandir=/sw/share/man

--infodir=/sw/lib/gcc4.8/info

--enable-languages=c,c++,fortran,lto,objc,obj-c++,java --with-gmp=/sw

--with-libiconv-prefix=/sw --with-isl=/sw --with-cloog=/sw --with-mpc=/sw

--with-system-zlib --enable-checking=yes --x-includes=/usr/X11R6/include

--x-libraries=/usr/X11R6/lib --program-suffix=-fsf-4.8

--disable-cloog-version-check --disable-isl-version-check


[Bug c/55428] -mms-bitfields hides -mno-align-double option

2012-11-21 Thread ktietz at gcc dot gnu.org


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



Kai Tietz ktietz at gcc dot gnu.org changed:



   What|Removed |Added



 CC||ktietz at gcc dot gnu.org



--- Comment #2 from Kai Tietz ktietz at gcc dot gnu.org 2012-11-21 15:30:12 
UTC ---

Hmm, it seems that for ms-bitfields the default-field-alignment overrides all

field-local alignments.  I wouldn't assume that __attribute__((packed)) is

directly related to this issue, but of course it is close to it.  For the

packed-case the issue seems to be that it isn't used for the fields, but for

the last element in struct/union.



Btw the testcase works nice, if you use in front a #pragma pack(4).


[Bug other/55358] Valgrind errors

2012-11-21 Thread markus at trippelsdorf dot de


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



Markus Trippelsdorf markus at trippelsdorf dot de changed:



   What|Removed |Added



 CC||markus at trippelsdorf dot

   ||de



--- Comment #1 from Markus Trippelsdorf markus at trippelsdorf dot de 
2012-11-21 15:30:35 UTC ---

The last error is reproducible with e.g.:



 % /var/tmp/gcc_valgrind/usr/local/bin/gcc -w -O2 -c

/home/markus/gcc/libiberty/cp-demangle.c

==6842== Invalid read of size 4

==6842==at 0xD20A91: rest_of_handle_ree() (ree.c:615)

==6842==by 0x826B2A: execute_one_pass(opt_pass*) (passes.c:2327)

==6842==by 0x826FA4: execute_pass_list(opt_pass*) (passes.c:2387)

==6842==by 0x826FB6: execute_pass_list(opt_pass*) (passes.c:2388)

==6842==by 0x826FB6: execute_pass_list(opt_pass*) (passes.c:2388)

==6842==by 0x5EC801: expand_function(cgraph_node*) (cgraphunit.c:1641)

==6842==by 0x5EE5C6: compile() (cgraphunit.c:1745)

==6842==by 0x5EEC69: finalize_compilation_unit() (cgraphunit.c:2120)

==6842==by 0x4D52EB: c_write_global_declarations() (c-decl.c:10120)

==6842==by 0x8C845C: compile_file() (toplev.c:559)

==6842==by 0x8CA319: toplev_main(int, char**) (toplev.c:1881)

==6842==by 0x4ECD894: (below main) (libc-start.c:258)

==6842==  Address 0x5b37f51 is 2,577 bytes inside a block of size 2,580 alloc'd

==6842==at 0x4026BA4: calloc (in

/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)

==6842==by 0xDFABD8: xcalloc (xmalloc.c:162)

==6842==by 0xD211C6: rest_of_handle_ree() (ree.c:884)

==6842==by 0x826B2A: execute_one_pass(opt_pass*) (passes.c:2327)

...


[Bug libstdc++/55429] new UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler on darwin

2012-11-21 Thread howarth at nitro dot med.uc.edu


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



--- Comment #1 from Jack Howarth howarth at nitro dot med.uc.edu 2012-11-21 
15:35:21 UTC ---

This error appears in libstdc++.log as...



Executing on host: /sw/src/fink.build/gcc48-4.8.0-1000/darwin_objdir/./gcc/g++

-shared-libgcc -B/sw/src/fink.build/gcc48-4.8.0-1000/darwin_objdir/./gcc

-nostdinc++

-L/sw/src/fink.build/gcc48-4.8.0-1000/darwin_objdir/x86_64-apple-darwin12.2.0/i386/libstdc++-v3/src

-L/sw/src/fink.build/gcc48-4.8.0-1000/darwin_objdir/x86_64-apple-darwin12.2.0/i386/libstdc++-v3/src/.libs

-B/sw/lib/gcc4.8/x86_64-apple-darwin12.2.0/bin/

-B/sw/lib/gcc4.8/x86_64-apple-darwin12.2.0/lib/ -isystem

/sw/lib/gcc4.8/x86_64-apple-darwin12.2.0/include -isystem

/sw/lib/gcc4.8/x86_64-apple-darwin12.2.0/sys-include -m32

-B/sw/src/fink.build/gcc48-4.8.0-1000/darwin_objdir/x86_64-apple-darwin12.2.0/i386/libstdc++-v3/src/.libs

-D_GLIBCXX_ASSERT -fmessage-length=0 -ffunction-sections -fdata-sections -g -O2

-g -O2 -DLOCALEDIR=. -nostdinc++

-I/sw/src/fink.build/gcc48-4.8.0-1000/darwin_objdir/x86_64-apple-darwin12.2.0/i386/libstdc++-v3/include/x86_64-apple-darwin12.2.0

-I/sw/src/fink.build/gcc48-4.8.0-1000/darwin_objdir/x86_64-apple-darwin12.2.0/i386/libstdc++-v3/include

-I/sw/src/fink.build/gcc48-4.8.0-1000/gcc-4.8-20121120/libstdc++-v3/libsupc++

-I/sw/src/fink.build/gcc48-4.8.0-1000/gcc-4.8-20121120/libstdc++-v3/include/backward

-I/sw/src/fink.build/gcc48-4.8.0-1000/gcc-4.8-20121120/libstdc++-v3/testsuite/util

/sw/src/fink.build/gcc48-4.8.0-1000/gcc-4.8-20121120/libstdc++-v3/testsuite/26_numerics/complex/abi_tag.cc

  -std=c++11 -S  -m32 -o abi_tag.s(timeout = 600)

PASS: 26_numerics/complex/abi_tag.cc (test for excess errors)

20_util/enable_shared_from_this/cons/constexpr.cc: output file does not exist

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexIfE4realB5cxx11Ev

20_util/enable_shared_from_this/cons/constexpr.cc: output file does not exist

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexIdE4realB5cxx11Ev

20_util/enable_shared_from_this/cons/constexpr.cc: output file does not exist

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexI[eg]E4realB5cxx11Ev

20_util/enable_shared_from_this/cons/constexpr.cc: output file does not exist

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexIiE4realB5cxx11Ev

20_util/enable_shared_from_this/cons/constexpr.cc: output file does not exist

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexIfE4imagB5cxx11Ev

20_util/enable_shared_from_this/cons/constexpr.cc: output file does not exist

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexIdE4imagB5cxx11Ev

20_util/enable_shared_from_this/cons/constexpr.cc: output file does not exist

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexI[eg]E4imagB5cxx11Ev

20_util/enable_shared_from_this/cons/constexpr.cc: output file does not exist

UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler

_ZNKSt7complexIiE4imagB5cxx11Ev

extra_tool_flags are:

  -include bits/stdc++.h


[Bug target/55426] gcc.target/arm/neon-vld1_dupQ.c ICEs on armeb

2012-11-21 Thread christophe.lyon at st dot com


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



--- Comment #1 from christophe.lyon at st dot com 2012-11-21 15:50:14 UTC ---

Reverting the definition of CANNOT_CHANGE_MODE_CLASS introduced on 2012-10-22

at rev #192687 avoids the ICE too.


[Bug c++/55418] Valgrind: Conditional jump or move depends on uninitialised value(s) in implicitly_declare_fn() method.c:1623

2012-11-21 Thread hp at gcc dot gnu.org


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



Hans-Peter Nilsson hp at gcc dot gnu.org changed:



   What|Removed |Added



 CC||hp at gcc dot gnu.org



--- Comment #2 from Hans-Peter Nilsson hp at gcc dot gnu.org 2012-11-21 
15:51:08 UTC ---

I haven't (In reply to comment #1)

 The following trivial patch fixes the issue:



I haven't looked at the context so I feel free to say it looks a bit obvious...


[Bug gcov-profile/55417] [4.8 Regression] AddressSanitizer reports stack-buffer-overflow in profiling code

2012-11-21 Thread markus at trippelsdorf dot de


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



Markus Trippelsdorf markus at trippelsdorf dot de changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #7 from Markus Trippelsdorf markus at trippelsdorf dot de 
2012-11-21 16:06:41 UTC ---

Fixed.


[Bug c++/55245] [4.6/4.7/4.8 Regression] Compiler segfault when compiling a small test case

2012-11-21 Thread xinliangli at gmail dot com


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



--- Comment #5 from davidxl xinliangli at gmail dot com 2012-11-21 16:17:27 
UTC ---

Should the main variant types gets laid out in gimplify_type_sizes, when the

variant's type has size, but the main variant is incomplete? 



David


[Bug libstdc++/55429] new UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler on darwin

2012-11-21 Thread redi at gcc dot gnu.org


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



--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org 2012-11-21 
16:44:41 UTC ---

Do you mean at exactly r193675 or at some point prior to that?



obviously not a libstdc++ bug in any case


[Bug other/55358] Valgrind errors

2012-11-21 Thread markus at trippelsdorf dot de


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



--- Comment #2 from Markus Trippelsdorf markus at trippelsdorf dot de 
2012-11-21 16:52:59 UTC ---

==13066== Conditional jump or move depends on uninitialised value(s)

==13066==at 0x56333A: pp_c_specifier_qualifier_list(c_pretty_print_info*,

tree_node*) (c-pretty-print.c:449)

==13066==by 0x563668: pp_c_type_id(c_pretty_print_info*, tree_node*)

(c-pretty-print.c:621)

==13066==by 0x4FF780: c_tree_printer(pretty_print_info*, text_info*, char

const*, int, bool, bool, bool) (c-objc-common.c:149)

==13066==by 0xDB6682: pp_base_format(pretty_print_info*, text_info*)

(pretty-print.c:509)

==13066==by 0xDB4478: diagnostic_report_diagnostic(diagnostic_context*,

diagnostic_info*) (diagnostic.c:756)

==13066==by 0xDB5043: error_at(unsigned int, char const*, ...)

(diagnostic.c:1036)

==13066==by 0x4EA6BA: build_component_ref(unsigned int, tree_node*,

tree_node*) (c-typeck.c:2156)

==13066==by 0x50968B: c_parser_postfix_expression_after_primary(c_parser*,

unsigned int, c_expr) (c-parser.c:6946)

==13066==by 0x501568: c_parser_postfix_expression(c_parser*)

(c-parser.c:6779)

==13066==by 0x502F22: c_parser_unary_expression(c_parser*)

(c-parser.c:5978)

==13066==by 0x50733E: c_parser_cast_expression(c_parser*, c_expr*)

(c-parser.c:5830)

==13066==by 0x502E06: c_parser_unary_expression(c_parser*)

(c-parser.c:5892)

==13066==

==13066== Conditional jump or move depends on uninitialised value(s)

==13066==at 0x5633C8: pp_c_specifier_qualifier_list(c_pretty_print_info*,

tree_node*) (c-pretty-print.c:497)

==13066==by 0x563668: pp_c_type_id(c_pretty_print_info*, tree_node*)

(c-pretty-print.c:621)

==13066==by 0x4FF780: c_tree_printer(pretty_print_info*, text_info*, char

const*, int, bool, bool, bool) (c-objc-common.c:149)

==13066==by 0xDB6682: pp_base_format(pretty_print_info*, text_info*)

(pretty-print.c:509)

==13066==by 0xDB4478: diagnostic_report_diagnostic(diagnostic_context*,

diagnostic_info*) (diagnostic.c:756)

==13066==by 0xDB5043: error_at(unsigned int, char const*, ...)

(diagnostic.c:1036)

==13066==by 0x4EA6BA: build_component_ref(unsigned int, tree_node*,

tree_node*) (c-typeck.c:2156)

==13066==by 0x50968B: c_parser_postfix_expression_after_primary(c_parser*,

unsigned int, c_expr) (c-parser.c:6946)

==13066==by 0x501568: c_parser_postfix_expression(c_parser*)

(c-parser.c:6779)

==13066==by 0x502F22: c_parser_unary_expression(c_parser*)

(c-parser.c:5978)

==13066==by 0x50733E: c_parser_cast_expression(c_parser*, c_expr*)

(c-parser.c:5830)

==13066==by 0x502E06: c_parser_unary_expression(c_parser*)

(c-parser.c:5892)

==13066==


[Bug fortran/55427] [OOP] ICE with class-array-pointer result

2012-11-21 Thread janus at gcc dot gnu.org


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



janus at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Keywords||ice-on-valid-code

   Last reconfirmed||2012-11-21

 CC||janus at gcc dot gnu.org,

   ||pault at gcc dot gnu.org

 Ever Confirmed|0   |1

Summary|ICE class pointer   |[OOP] ICE with

   ||class-array-pointer result



--- Comment #1 from janus at gcc dot gnu.org 2012-11-21 16:52:56 UTC ---

(In reply to comment #0)

 Is that known?



Not that I know of. Reduced version:





MODULE base_types

  IMPLICIT NONE

  TYPE :: base_type

  END TYPE

contains

  FUNCTION points_to () RESULT (reslt)

CLASS(base_type), DIMENSION(:), POINTER :: reslt

  END FUNCTION

END MODULE



program bug

  use base_types

  implicit none

  CLASS(base_type), POINTER, DIMENSION(:) :: reslt

  reslt = points_to()

end





ICEs with trunk and 4.7.


[Bug tree-optimization/55264] [4.6/4.7/4.8 Regression] ICE: in ipa_make_edge_direct_to_target, at ipa-prop.c:2141 with -O2 -fno-early-inlining -fno-weak

2012-11-21 Thread aldyh at gcc dot gnu.org


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



Aldy Hernandez aldyh at gcc dot gnu.org changed:



   What|Removed |Added



 CC||aldyh at gcc dot gnu.org

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

   |gnu.org |



--- Comment #2 from Aldy Hernandez aldyh at gcc dot gnu.org 2012-11-21 
16:57:53 UTC ---

Mine.


[Bug tree-optimization/55260] [4.8 Regression] ICE: in ipa_get_parm_lattices, at ipa-cp.c:263 with -O2 -fno-inline -fipa-cp-clone

2012-11-21 Thread jamborm at gcc dot gnu.org


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



--- Comment #6 from Martin Jambor jamborm at gcc dot gnu.org 2012-11-21 
17:03:46 UTC ---

This is the second fix, as posted to the mailing list:



http://gcc.gnu.org/ml/gcc-patches/2012-11/msg01724.html



also slightly related is:



http://gcc.gnu.org/ml/gcc-patches/2012-11/msg01758.html


[Bug tree-optimization/55260] [4.8 Regression] ICE: in ipa_get_parm_lattices, at ipa-cp.c:263 with -O2 -fno-inline -fipa-cp-clone

2012-11-21 Thread jamborm at gcc dot gnu.org


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



--- Comment #7 from Martin Jambor jamborm at gcc dot gnu.org 2012-11-21 
17:04:54 UTC ---

Author: jamborm

Date: Wed Nov 21 17:04:45 2012

New Revision: 193700



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

Log:

2012-11-21  Martin Jambor  mjam...@suse.cz



PR tree-optimization/55260

* ipa-cp.c (intersect_aggregates_with_edge): New function.

(find_aggregate_values_for_callers_subset): Part moved to the function

above.  Call it.

(cgraph_edge_brings_all_agg_vals_for_node): Reimplemented using

intersect_aggregates_with_edge.



* testsuite/g++.dg/torture/pr55260-2.C: New test.





Added:

trunk/gcc/testsuite/g++.dg/torture/pr55260-2.C

Modified:

trunk/gcc/ChangeLog

trunk/gcc/ipa-cp.c

trunk/gcc/testsuite/ChangeLog


[Bug other/55430] New: [4.8 Regression

2012-11-21 Thread jakub at gcc dot gnu.org


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



 Bug #: 55430

   Summary: [4.8 Regression

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: other

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

ReportedBy: ja...@gcc.gnu.org

CC: hjl.to...@gmail.com, h...@gcc.gnu.org,

mar...@trippelsdorf.de

Depends on: 55358





+++ This bug was initially created as a clone of Bug #55358 +++



With revision 193546, valgrind reports:



==26359== Invalid read of size 4

==26359==at 0xB58AEE: rest_of_handle_ree() (ree.c:617)

==26359==by 0x74ADA3: execute_one_pass(opt_pass*) (passes.c:2339)

==26359==by 0x74B174: execute_pass_list(opt_pass*) (passes.c:2400)

==26359==by 0x74B186: execute_pass_list(opt_pass*) (passes.c:2401)

==26359==by 0x74B186: execute_pass_list(opt_pass*) (passes.c:2401)

==26359==by 0x5AB16D: expand_function(cgraph_node*) (cgraphunit.c:1643)

==26359==by 0x5AC786: compile() (cgraphunit.c:1747)

==26359==by 0x5ACBA9: finalize_compilation_unit() (cgraphunit.c:2122)

==26359==by 0x4E47DF: c_write_global_declarations() (c-decl.c:10128)

==26359==by 0x7D7F4C: compile_file() (toplev.c:559)

==26359==by 0x7D9AA7: toplev_main(int, char**) (toplev.c:1881)

==26359==by 0x38F3A21674: (below main) (in /usr/lib64/libc-2.15.so)

==26359==  Address 0x4e10d51 is 2,785 bytes inside a block of size 2,788

alloc'd

==26359==at 0x4A06B0F: calloc (vg_replace_malloc.c:593)

==26359==by 0xC0F708: xcalloc (xmalloc.c:162)

==26359==by 0xB59070: rest_of_handle_ree() (ree.c:886)


[Bug tree-optimization/55260] [4.8 Regression] ICE: in ipa_get_parm_lattices, at ipa-cp.c:263 with -O2 -fno-inline -fipa-cp-clone

2012-11-21 Thread jamborm at gcc dot gnu.org


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



Martin Jambor jamborm at gcc dot gnu.org changed:



   What|Removed |Added



 Status|ASSIGNED|RESOLVED

 Resolution||FIXED



--- Comment #8 from Martin Jambor jamborm at gcc dot gnu.org 2012-11-21 
17:10:05 UTC ---

Fixed.


[Bug middle-end/55430] [4.8 Regression

2012-11-21 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 Target||x86_64-linux

   Priority|P3  |P1

 Status|UNCONFIRMED |NEW

   Last reconfirmed||2012-11-21

  Component|other   |middle-end

 CC||vmakarov at redhat dot com

 Ever Confirmed|0   |1

   Target Milestone|--- |4.8.0



--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
17:16:00 UTC ---

This ree.c:61X failure is a LRA caused miscompilation of ree.c apparently.

Reduced self-contained testcase:



struct S

{

  unsigned int s1 : 8;

  unsigned int s2 : 2;

};



int

foo (int x, int y, struct S *z, unsigned int w)

{

  if (z[y].s2 == x  z[y].s1 == w)

return 1;

  return 0;

}



#ifdef FULL

#include unistd.h

#include sys/mman.h



int foo (int, int, struct S *, unsigned int) __attribute__((noinline,

noclone));



int

main ()

{

  unsigned long ps = sysconf (_SC_PAGE_SIZE);

  char *p = mmap (NULL, 8 * ps, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);

  if (p == MAP_FAILED)

return 0;

  if (mprotect (p + 4 * ps, 4 * ps, PROT_NONE))

return 0;

  if ((4 * ps / sizeof (struct S)) * sizeof (struct S) != 4 * ps)

return 0;

  struct S *s = (struct S *) (p + 4 * ps);

  return foo (0, 0, s - 1, 0) != 1;

}

#endif



compile with -O2 on x86_64-linux, and you can see (or when compiled with -O2

-DFULL watch at runtime) that before LRA merge, code like:

movzbl  1(%rdx), %eax

andl$3, %eax

has been generated to read the s2 bitfield, while with LRA it is

movl1(%rdx), %esi

andl$3, %esi

instead (note movl instead of movzbl).  But the structure (in ree.c s2 is kind

and struct S is struct ext_modified) is 4 bytes long, thus reading 4 bytes from

the start of the structure + 1 byte is potentially going to trap if the

structure is at the end of some page (as -DFULL shows).

In *.ira we have:

(insn 15 12 16 2 (set (reg:QI 80 [ *_6+1 ])

(mem:QI (plus:DI (reg/f:DI 62 [ D.1744 ])

(const_int 1 [0x1])) [2 *_6+1 S1 A8])) reetest.c:10 67

{*movqi_internal}

 (expr_list:REG_EQUIV (mem:QI (plus:DI (reg/f:DI 62 [ D.1744 ])

(const_int 1 [0x1])) [2 *_6+1 S1 A8])

(nil)))

(note 16 15 17 2 NOTE_INSN_DELETED)

(insn 17 16 7 2 (parallel [

(set (reg:SI 81 [ D.1742 ])

(and:SI (subreg:SI (reg:QI 80 [ *_6+1 ]) 0)

(const_int 3 [0x3])))

(clobber (reg:CC 17 flags))

]) reetest.c:10 376 {*andsi_1}

 (expr_list:REG_DEAD (reg:QI 80 [ *_6+1 ])

(expr_list:REG_UNUSED (reg:CC 17 flags)

(nil

which *.reload turns into:

(insn 43 16 17 2 (set (reg:SI 4 si [orig:81 D.1742 ] [81])

(mem:SI (plus:DI (reg/f:DI 1 dx [orig:62 D.1744 ] [62])

(const_int 1 [0x1])) [2 *_6+1 S4 A8])) reetest.c:10 65

{*movsi_internal}

 (nil))

(insn 17 43 44 2 (parallel [

(set (reg:SI 4 si [orig:81 D.1742 ] [81])

(and:SI (reg:SI 4 si [orig:81 D.1742 ] [81])

(const_int 3 [0x3])))

(clobber (reg:CC 17 flags))

]) reetest.c:10 376 {*andsi_1}

 (nil))


[Bug other/55358] Valgrind errors

2012-11-21 Thread markus at trippelsdorf dot de


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



--- Comment #3 from Markus Trippelsdorf markus at trippelsdorf dot de 
2012-11-21 17:17:23 UTC ---

I hope it's OK to just dump the errors here as I encounter them.

This one looks similar to the rest_of_handle_ree() issue:



==23637== Invalid write of size 8

==23637==at 0xCF9951: rest_of_handle_dse() (dse.c:2874)

==23637==by 0x826B2A: execute_one_pass(opt_pass*) (passes.c:2327)

==23637==by 0x826FA4: execute_pass_list(opt_pass*) (passes.c:2387)

==23637==by 0x826FB6: execute_pass_list(opt_pass*) (passes.c:2388)

==23637==by 0x5EC801: expand_function(cgraph_node*) (cgraphunit.c:1641)

==23637==by 0x5EE5C6: compile() (cgraphunit.c:1745)

==23637==by 0x5EEC69: finalize_compilation_unit() (cgraphunit.c:2120)

==23637==by 0x4D52EB: c_write_global_declarations() (c-decl.c:10120)

==23637==by 0x8C845C: compile_file() (toplev.c:559)

==23637==by 0x8CA319: toplev_main(int, char**) (toplev.c:1881)

==23637==by 0x4ECD894: (below main) (libc-start.c:258)

==23637==  Address 0x69fdd50 is 112 bytes inside a block of size 11,208 alloc'd

==23637==at 0x4028ECB: malloc (in

/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)

==23637==by 0xDFAB97: xmalloc (xmalloc.c:147)

==23637==by 0x57E6C8: pool_alloc(alloc_pool_def*) (alloc-pool.c:282)

==23637==by 0xCF8F1C: record_store(rtx_def*, bb_info*) (dse.c:1544)

==23637==by 0xCF9D14: rest_of_handle_dse() (dse.c:2676)

==23637==by 0x826B2A: execute_one_pass(opt_pass*) (passes.c:2327)

==23637==by 0x826FA4: execute_pass_list(opt_pass*) (passes.c:2387)

==23637==by 0x826FB6: execute_pass_list(opt_pass*) (passes.c:2388)

==23637==by 0x5EC801: expand_function(cgraph_node*) (cgraphunit.c:1641)

==23637==by 0x5EE5C6: compile() (cgraphunit.c:1745)

==23637==by 0x5EEC69: finalize_compilation_unit() (cgraphunit.c:2120)

==23637==by 0x4D52EB: c_write_global_declarations() (c-decl.c:10120)

==23637==


[Bug tree-optimization/54471] [4.8 Regression] FAIL: gcc.dg/sms-8.c execution test

2012-11-21 Thread glisse at gcc dot gnu.org


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



--- Comment #9 from Marc Glisse glisse at gcc dot gnu.org 2012-11-21 17:18:47 
UTC ---

Jakub, your patch makes sense to me (or min0.is_zero() and min1.is_zero()). I

am ashamed I managed to get products with [0,n] (with n larger than MAX/2)

wrong. Good thing Kenneth Zadeck's wide_int will soon allow us to remove most

of this horrible code.



Another test that shows the error (optimizes away the call to g):



void g();

void h();

void f(unsigned __int128 x){

  if(x(unsigned __int128)(-3))return;

  unsigned __int128 y=2*x;

  if(y==42) g();

  else h();

}


[Bug other/55358] Valgrind errors

2012-11-21 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
17:20:02 UTC ---

The ree.c miscompilation tracked in PR55430 now.


[Bug tree-optimization/54471] [4.8 Regression] FAIL: gcc.dg/sms-8.c execution test

2012-11-21 Thread jakub at gcc dot gnu.org


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



--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
17:31:58 UTC ---

Thanks, I'm going to include your test too then:

--- gcc/testsuite/gcc.dg/tree-ssa/vrp86.c.jj2012-11-21 18:27:53.389280736

+0100

+++ gcc/testsuite/gcc.dg/tree-ssa/vrp86.c2012-11-21 18:27:47.0

+0100

@@ -0,0 +1,26 @@

+/* PR tree-optimization/54471 */

+/* { dg-do compile } */

+/* { dg-options -O2 -fdump-tree-vrp1 } */

+

+#ifdef __SIZEOF_INT128__

+#define T __int128

+#else

+#define T long long

+#endif

+

+void fn1call ();

+void fn2call ();

+void f (unsigned T x)

+{

+  if (x  (unsigned T) -3)

+return;

+  unsigned T y = 2 * x;

+  if (y == 42)

+fn1call ();

+  else

+fn2call ();

+}

+

+/* { dg-final { scan-tree-dump fn1call vrp1} } */

+/* { dg-final { scan-tree-dump fn2call vrp1} } */

+/* { dg-final { cleanup-tree-dump vrp1 } } */


[Bug target/55431] New: Invalid auxv search in ppc linux-unwind code.

2012-11-21 Thread bugdal at aerifal dot cx


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



 Bug #: 55431

   Summary: Invalid auxv search in ppc linux-unwind code.

Classification: Unclassified

   Product: gcc

   Version: unknown

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: target

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

ReportedBy: bug...@aerifal.cx





config/rs6000/linux-unwind.h contains a function ppc_linux_aux_vector which

searches for the aux vector based on __libc_stack_end; the only use of this

function is to lookup the AT_HWCAP bitfield provided by the kernel. The results

seem to be used only for premature optimization: optimizing out copying

register sets that aren't used on the current cpu model.



Unfortunately, the method used to search for auxv is invalid at the time the

call to ppc_linux_aux_vector is made. The array pointed to by extern char

**environ; may be modified by the application; for example it may be truncated

to clear the environment by writing *environ = 0; In this case, the old,

no-longer-used part of the environ array will be incorrectly interpreted as the

aux vector, causing the unwind code not to find the hwcap values and thus not

to save the register sets it needs to save.



I found this bug while debugging a report that gcc couldn't be built for

powerpc on musl libc due to missing __libc_stack_end symbol. I don't see

anywhere that it's documented that __libc_stack_end points to the original argc

slot passed from the kernel, rather than some arbitrary address between main's

stack frame and argv[], so I think it's very bad design to be relying on this

implementation-detail anyway. The fix I would like to see is the complete

removal of ppc_linux_aux_vector and updating ppc_fallback_frame_state not to

care which register sets are actually in use.


[Bug tree-optimization/38785] [4.5/4.6/4.7/4.8 Regression] huge performance regression on EEMBC bitmnp01

2012-11-21 Thread hubicka at gcc dot gnu.org


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



Jan Hubicka hubicka at gcc dot gnu.org changed:



   What|Removed |Added



 Status|WAITING |REOPENED



--- Comment #35 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-21 
17:56:04 UTC ---

Too bad, we really need to make some model on how many PHI copies we

introduce... I agree with Richard's comment that Joern's patch is rather bad in

respect to optimization oppurtunities.   This is more or less register pressure

problem. I will try think about it a bit more ;)


[Bug tree-optimization/38785] [4.5/4.6/4.7/4.8 Regression] huge performance regression on EEMBC bitmnp01

2012-11-21 Thread amylaar at gcc dot gnu.org


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



--- Comment #36 from Jorn Wolfgang Rennecke amylaar at gcc dot gnu.org 
2012-11-21 17:59:10 UTC ---

(In reply to comment #35)

 Too bad, we really need to make some model on how many PHI copies we

 introduce... I agree with Richard's comment that Joern's patch is rather bad 
 in

 respect to optimization oppurtunities.   This is more or less register 
 pressure

 problem. I will try think about it a bit more ;)



This is not just register pressure, these constant loads and register-register

copies do not come free, either.


[Bug c++/450] global variable treated as a local variable.

2012-11-21 Thread tyh73bac at yahoo dot com


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



--- Comment #3 from Tyheem Backer tyh73bac at yahoo dot com 2012-11-21 
18:40:08 UTC ---

Created attachment 28756

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

1


[Bug fortran/55427] [OOP] ICE with class-array-pointer result

2012-11-21 Thread burnus at gcc dot gnu.org


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



Tobias Burnus burnus at gcc dot gnu.org changed:



   What|Removed |Added



 CC||burnus at gcc dot gnu.org



--- Comment #2 from Tobias Burnus burnus at gcc dot gnu.org 2012-11-21 
18:44:45 UTC ---

For trans-expr.c:6350 in gfc_trans_pointer_assignment:



6349  gfc_add_modify (block, lse.expr,

6350   fold_convert (TREE_TYPE (lse.expr),

rse.expr));





TREE_TYPE(LHS) is:

 pointer_type 0x2c29b1f8

type record_type 0x2c29b150 __vtype_base_types_Base_type BLK



And RHS is:

 call_expr 0x2c1986c0

type record_type 0x2c29b930 __class_base_types_Base_type_1_0p type_4

BLK

size integer_cst 0x2c270e20 constant 448


[Bug bootstrap/55388] [4.8 regression] ICE in int_mode_for_mode at stor-layout.c:423 breaks sparc64-linux bootstrap

2012-11-21 Thread rsandifo at gcc dot gnu.org


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



--- Comment #4 from rsandifo at gcc dot gnu.org rsandifo at gcc dot gnu.org 
2012-11-21 18:56:23 UTC ---

Please provide preprocessed source


[Bug c++/450] global variable treated as a local variable.

2012-11-21 Thread redi at gcc dot gnu.org


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



Jonathan Wakely redi at gcc dot gnu.org changed:



   What|Removed |Added



  Attachment #28756|0   |1

is obsolete||

  Attachment #28756|application/xml |text/plain

  mime type||

  Attachment #28756|1   |[spam]

description||



--- Comment #4 from Jonathan Wakely redi at gcc dot gnu.org 2012-11-21 
19:07:11 UTC ---

Comment on attachment 28756

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

[spam]



[deleted spam attachment]


[Bug c/55420] Gcc produces an internal compiler error (nested function with variably modified return)

2012-11-21 Thread mikpe at it dot uu.se


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



--- Comment #2 from Mikael Pettersson mikpe at it dot uu.se 2012-11-21 
20:20:43 UTC ---

FWIW, the ICE was cured for 4.7 by Joseph Myer's Don't use pending_sizes list

for C patch in r173422:

http://gcc.gnu.org/ml/gcc-patches/2011-05/msg00319.html

http://gcc.gnu.org/ml/gcc-cvs/2011-05/msg00197.html


[Bug c/55397] [asan] -faddress-sanitizer should define a CPP macro

2012-11-21 Thread hjl at gcc dot gnu.org


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



--- Comment #6 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org 2012-11-21 
20:21:02 UTC ---

Author: hjl

Date: Wed Nov 21 20:20:42 2012

New Revision: 193704



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

Log:

Define __SANITIZE_ADDRESS__ for -fsanitize=address



PR c/55397

* cppbuiltin.c (define_builtin_macros_for_compilation_flags):

Define __SANITIZE_ADDRESS__ for flag_asan.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/cppbuiltin.c


[Bug rtl-optimization/55396] -O2 -m32 -fno-omit-frame-pointer: internal compiler error: in check_rtl, at lra.c:2007

2012-11-21 Thread gcc at breakpoint dot cc


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



Sebastian Andrzej Siewior gcc at breakpoint dot cc changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||FIXED



--- Comment #3 from Sebastian Andrzej Siewior gcc at breakpoint dot cc 
2012-11-21 20:24:54 UTC ---

(In reply to comment #2)

 Author: vmakarov

 Date: Tue Nov 20 21:32:59 2012

 New Revision: 193678



yup, that works. Thanks.



Sebastian


[Bug c/55397] [asan] -faddress-sanitizer should define a CPP macro

2012-11-21 Thread hjl.tools at gmail dot com


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



H.J. Lu hjl.tools at gmail dot com changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||FIXED

   Target Milestone|--- |4.8.0



--- Comment #7 from H.J. Lu hjl.tools at gmail dot com 2012-11-21 20:28:52 
UTC ---

Fixed.


[Bug libgomp/55411] OMP threads lose their OMP_WAIT_POLICY when another OMP thread gets destructed

2012-11-21 Thread jakub at gcc dot gnu.org


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



--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
20:29:28 UTC ---

Author: jakub

Date: Wed Nov 21 20:29:14 2012

New Revision: 193706



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

Log:

PR libgomp/55411

* team.c (gomp_free_thread): Decrease gomp_managed_threads

if pool had any threads_used.



Modified:

trunk/libgomp/ChangeLog

trunk/libgomp/team.c


[Bug libgomp/55411] OMP threads lose their OMP_WAIT_POLICY when another OMP thread gets destructed

2012-11-21 Thread jakub at gcc dot gnu.org


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



--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-21 
20:31:43 UTC ---

Author: jakub

Date: Wed Nov 21 20:31:31 2012

New Revision: 193707



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

Log:

PR libgomp/55411

* team.c (gomp_free_thread): Decrease gomp_managed_threads

if pool had any threads_used.



Modified:

branches/gcc-4_7-branch/libgomp/ChangeLog

branches/gcc-4_7-branch/libgomp/team.c


[Bug c++/55425] constexpr does not work in many situations (both built-in and user supplied literals)

2012-11-21 Thread glisse at gcc dot gnu.org


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



Marc Glisse glisse at gcc dot gnu.org changed:



   What|Removed |Added



 CC||glisse at gcc dot gnu.org



--- Comment #5 from Marc Glisse glisse at gcc dot gnu.org 2012-11-21 20:52:13 
UTC ---

(In reply to comment #2)

 (In reply to comment #1)

  No, the error says __m128 is not a literal type, which I assume is true.

  Changing that would be an enhancement request.

 

 With G++ 4.8 __m128i is a literal type, so this example works.



PR 53094 shows that many other vector things don't work with constexpr though.


[Bug bootstrap/55388] [4.8 regression] ICE in int_mode_for_mode at stor-layout.c:423 breaks sparc64-linux bootstrap

2012-11-21 Thread mikpe at it dot uu.se


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



--- Comment #5 from Mikael Pettersson mikpe at it dot uu.se 2012-11-21 
21:00:00 UTC ---

Created attachment 28757

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

preprocessed libstdc++-v3/libsupc++/dyncast.cc



Full configuration options:

/mnt/scratch/gcc-4.8-r193687/configure --prefix=/mnt/scratch/install48

--with-gmp=/home/mikpe/pkgs/linux-sparc64/gmp-5.0.5

--with-mpfr=/home/mikpe/pkgs/linux-sparc64/mpfr-3.1.1

--with-mpc=/home/mikpe/pkgs/linux-sparc64/mpc-1.0.1 --enable-multilib

--disable-plugin --disable-lto --disable-nls --enable-threads=posix

--enable-checking=release --disable-libmudflap --enable-languages=c,c++

--build=sparc-unknown-linux --target=sparc-unknown-linux --with-cpu=ultrasparc

--enable-targets=all --disable-libsanitizer


[Bug bootstrap/55388] [4.8 regression] ICE in int_mode_for_mode at stor-layout.c:423 breaks sparc64-linux bootstrap

2012-11-21 Thread mikpe at it dot uu.se


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



--- Comment #6 from Mikael Pettersson mikpe at it dot uu.se 2012-11-21 
21:09:34 UTC ---

Oh, I uploaded dyncast.i because that was the most recent ICE on my screen just

now.  It ICEs with the same message as class_type_info.cc so it should be Ok as

a test case.  Sorry about the confusion.


[Bug pch/55399] pch tests fail on mips-mti-linux-gnu target

2012-11-21 Thread sje at gcc dot gnu.org


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



--- Comment #6 from Steve Ellcey sje at gcc dot gnu.org 2012-11-21 21:28:41 
UTC ---

Author: sje

Date: Wed Nov 21 21:28:30 2012

New Revision: 193709



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

Log:

2012-11-21  Steve Ellcey  sell...@mips.com



PR pch/55399

* files.c (pch_open_file): Fix check for implicit_preinclude.



Modified:

trunk/libcpp/ChangeLog

trunk/libcpp/files.c


[Bug middle-end/54630] [4.8 Regression] GCC 4.8 --enable-languages=c build fails: Undefined symbols: ___cxa_guard_acquire and ___cxa_guard_release

2012-11-21 Thread baker at usgs dot gov


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



--- Comment #17 from Larry Baker baker at usgs dot gov 2012-11-21 21:37:26 
UTC ---

Jonathan,



Yes, I should have said link with a C++ driver instead of link with a C++

compiler.



No, it's not equivalent, -static-libstdcxx does not imply -lstdc++,

 which is why you get missing symbols.



-static-libstdcxx has nothing to do with why I get the missing symbols.  I get

the missing symbols because the LINKER changed from $(CC) to $(CXX).



Why not just use the Sourcery configuration that works?



Why change the LINKER for a C++ program from $(CXX) to $(CC)?  That is what

causes the link to fail.  The g++ driver may have any number of built-in ld

options that differ from the gcc driver.  Why should I care?  The point of

using the g++ driver for a C++ program is that it takes care of all that for

me.



If I get everything working for my cross compiler without using

--with-host-libstdcxx, then the LINKER is $(CXX), which implies -lstdc++.  Now,

suppose I want to eliminate the dependencies of my cross compiler on the libc

and llibc++ shared libraries that happen to be on my Linux system, so that my

cross compiler will run on many Linux systems with possibly different libc's

and libc++'s.  In that case, I do not want to select different library (e.g., a

debug variant), I want to select the .a variant in place of the .so variant. 

If I were writing my own link command, I would use g++ to do the linking with

the options -static-libgcc -static-libstdc++.  So, how to do the same when

building a GCC cross compiler?



The GCC installation notes, http://gcc.gnu.org/install/configure.html, offer

only one method to add linker options to build GCC: --with-host-libstdcxx.  The

example given there is `-Wl,-Bstatic,-lstdc++,-Bdynamic -lm', which is

equivalent to g++ -static-libstdc++ (plus -lm, which I have no idea why it is

there).  (As far as I can tell, Sourcery copied this example verbatim,

including the unnecessary -lm.)  This example was likely written before the g++

-static-libstdc++ options existed, and certainly was written before the GCC

implementation language was changed from C to C++.  What is not mentioned is

the side effect that the LINKER will change from $(CXX) to ($CC).



To allow fine-tuning the libs, you need the

additional libs to not be used, which implies not linking with g++.



Then they should specify CXX=gcc (since there is no way to specify the LINKER

directly).



All this will be moot, I think, when others start bumping into GCC builds that

fail as more of GCC is implemented in C++.


[Bug pch/55399] pch tests fail on mips-mti-linux-gnu target

2012-11-21 Thread sje at gcc dot gnu.org


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



Steve Ellcey sje at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||FIXED



--- Comment #7 from Steve Ellcey sje at gcc dot gnu.org 2012-11-21 21:41:49 
UTC ---

Patch for this has been checked in.


[Bug bootstrap/54795] [4.8 Regression] Random profiledbootstrap failure with LTO

2012-11-21 Thread markus at trippelsdorf dot de


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



--- Comment #14 from Markus Trippelsdorf markus at trippelsdorf dot de 
2012-11-21 21:52:26 UTC ---

LTO gets miscompiled.



If I configure with:

~/gcc/configure --disable-bootstrap --disable-werror --disable-multilib

--enable-languages=c,c++ --enable-checking=yes,valgrind

and build with gcc-4.7, then the bad memory access in LTO vanishes.



This could be a dup of Bug 55430 (LRA miscompilation issue).


[Bug c/55422] gcc does not diagnose change of linkage for a function.

2012-11-21 Thread cookevillain at yahoo dot com


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



--- Comment #4 from cookevillain at yahoo dot com 2012-11-21 21:53:48 UTC ---

(In reply to comment #3)

 Looks like the first example is just an undefined behavior in which case GCC

 isn't obliged to issue an error.



Quite true. I just thought that the diagnostic should be consistent. In

addition, it is rare to use extern at block scope but a function declaration is

automatically `extern'ed in such case so this linkage inconsistency is even

harder to spot without a diagnostic when the inner `extern' is omitted.


[Bug c++/55432] New: Too much constexpr makes the compiler crash

2012-11-21 Thread akrzemi1 at gmail dot com


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



 Bug #: 55432

   Summary: Too much constexpr makes the compiler crash

Classification: Unclassified

   Product: gcc

   Version: 4.6.3

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c++

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

ReportedBy: akrze...@gmail.com





The following short code crashes the compiler:



struct tag_t{} tag{};



constexpr tag_t const pass(tag_t  t)

{

return t;

}



struct S 

{

constexpr S(tag_t)  {};

};



struct T

{

S mem;

T( tag_t  args ) : mem(pass(args)) {}

};



T t(tag);



int main() {}


[Bug c++/55432] Too much constexpr makes the compiler crash

2012-11-21 Thread daniel.kruegler at googlemail dot com

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

Daniel Krügler daniel.kruegler at googlemail dot com changed:

   What|Removed |Added

 CC||daniel.kruegler at
   ||googlemail dot com

--- Comment #1 from Daniel Krügler daniel.kruegler at googlemail dot com 
2012-11-21 22:08:55 UTC ---
This seems to be fixed in 4.8.0 HEAD


[Bug fortran/55352] [4.7/4.8 Regression] Erroneous gfortran warning of unused module variable when variable is only used in namelist

2012-11-21 Thread janus at gcc dot gnu.org


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



--- Comment #8 from janus at gcc dot gnu.org 2012-11-21 22:20:05 UTC ---

Author: janus

Date: Wed Nov 21 22:19:51 2012

New Revision: 193711



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

Log:

2012-11-21  Janus Weil  ja...@gcc.gnu.org



PR fortran/55352

* trans-decl.c (generate_local_decl): Don't warn for explicitly imported

but unused module variables which are in a namelist or common block.



2012-11-21  Janus Weil  ja...@gcc.gnu.org



PR fortran/55352

* gfortran.dg/namelist_76.f90: New.



Added:

trunk/gcc/testsuite/gfortran.dg/namelist_76.f90

Modified:

trunk/gcc/fortran/ChangeLog

trunk/gcc/fortran/trans-decl.c

trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/55414] spec2006 416.gamess compilation fails on LRA

2012-11-21 Thread vmakarov at gcc dot gnu.org


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



--- Comment #1 from Vladimir Makarov vmakarov at gcc dot gnu.org 2012-11-21 
22:22:32 UTC ---

Author: vmakarov

Date: Wed Nov 21 22:22:11 2012

New Revision: 193712



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

Log:

2012-11-21  Vladimir Makarov  vmaka...@redhat.com



PR rtl-optimization/55414

* lra-constraints.c (Index): New function.

(lra_constraints): Check dead equiv init insns.





Modified:

trunk/gcc/ChangeLog

trunk/gcc/lra-constraints.c


[Bug testsuite/55429] new UNRESOLVED: 20_util/enable_shared_from_this/cons/constexpr.cc scan-assembler on darwin

2012-11-21 Thread dominiq at lps dot ens.fr


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



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



   What|Removed |Added



 Target|x86_64-apple-darwin12   |*-apple-darwin*

 Status|UNCONFIRMED |NEW

   Last reconfirmed||2012-11-21

  Component|libstdc++   |testsuite

   Host|x86_64-apple-darwin12   |*-apple-darwin*

 Ever Confirmed|0   |1

  Build|x86_64-apple-darwin12   |*-apple-darwin*



--- Comment #3 from Dominique d'Humieres dominiq at lps dot ens.fr 2012-11-21 
22:31:46 UTC ---

 Do you mean at exactly r193675 or at some point prior to that?



This appeared between revisions 193417 (OK) and 193542 (UNRESOLVED) for serial

testing. I don't see it if I do a parallel testing (-j2).



 obviously not a libstdc++ bug in any case



I agree and I changed the component to testsuite. What it is strange is that

26_numerics/complex/abi_tag.cc is supposed to scan assembler (abi_tag.s), but

look at 20_util/enable_shared_from_this/cons/constexpr.cc.



Is there people around running the testsuite serially on non-darwin platform?


[Bug target/55433] New: [4.8 Regression] ICE on excessive reloads

2012-11-21 Thread PHHargrove at lbl dot gov


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



 Bug #: 55433

   Summary: [4.8 Regression] ICE on excessive reloads

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: target

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

ReportedBy: phhargr...@lbl.gov

CC: g...@intrepid.com, ne...@intrepid.com





The 9-line stand-alone test case at the end of this report fails as show below

on MacOS (at least versions 10.6 and 10.8) on x86-64 machines when targeting

the ILP32 ABI.  It notably does NOT fail on Linux/x86-64.



This was seen in SVN r193679 (on MacOSX 10.6) and r193709 (on MacOSX 10.8).



--cut--

$ gcc -m32 -O1 -fpreprocessed -c testcase.c

testcase.c: In function 'test':

testcase.c:10:1: internal compiler error: Max. number of generated reload insns

per insn is achieved (90)



 }

 ^



testcase.c:9:1: internal compiler error: Abort trap

gcc: internal compiler error: Abort trap (program cc1)

Abort trap

--cut--



Note that while the error message is the same as bug 55247, I have confirmed

that the test case attached to that bug report has NOT regressed.  Therefore, I

believe this is a different bug (though possibly related).



Some additional data:

+  -m32 is required (no bug seen w/ -m64)

+  Linux host is fine (w/ -m32 and -m64)

+  -O1 is sufficient, but -O2 and -O3 fail in the same manner

+  removing unsigned from the typedef eliminates the problem

+  adding -mno-sse to the command line eliminates the problem





The testcase:



typedef unsigned long long tick_t; // NOTE: no bug if unsigned is removed

extern int foo(void);

extern tick_t tick(void);

double test(void) {

  struct { tick_t ticks; } st;

  st.ticks = tick();

  foo(); // NOTE: no bug if this call is removed

  return (double)st.ticks;

}


[Bug target/55433] [4.8 Regression] ICE on excessive reloads

2012-11-21 Thread PHHargrove at lbl dot gov


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



--- Comment #1 from Paul H. Hargrove PHHargrove at lbl dot gov 2012-11-21 
22:48:05 UTC ---

Minor correction:



The line or error output in the Description that reads

   testcase.c:10:1: internal compiler error: [...]

should instead read

   testcase.c:9:1: internal compiler error: [...]



[line number off-by-one due to pilot error when entering the report]


[Bug bootstrap/55388] [4.8 regression] ICE in int_mode_for_mode at stor-layout.c:423 breaks sparc64-linux bootstrap

2012-11-21 Thread rsandifo at gcc dot gnu.org


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



--- Comment #7 from rsandifo at gcc dot gnu.org rsandifo at gcc dot gnu.org 
2012-11-21 23:28:47 UTC ---

(In reply to comment #5)

 Created attachment 28757 [details]

 preprocessed libstdc++-v3/libsupc++/dyncast.cc

 

 Full configuration options:

 /mnt/scratch/gcc-4.8-r193687/configure --prefix=/mnt/scratch/install48

 --with-gmp=/home/mikpe/pkgs/linux-sparc64/gmp-5.0.5

 --with-mpfr=/home/mikpe/pkgs/linux-sparc64/mpfr-3.1.1

 --with-mpc=/home/mikpe/pkgs/linux-sparc64/mpc-1.0.1 --enable-multilib

 --disable-plugin --disable-lto --disable-nls --enable-threads=posix

 --enable-checking=release --disable-libmudflap --enable-languages=c,c++

 --build=sparc-unknown-linux --target=sparc-unknown-linux --with-cpu=ultrasparc

 --enable-targets=all --disable-libsanitizer



Thanks.  After trying and failing to convince it to fail in cross environment,

it finally dawned on me that the failure was during stage 2, so presumably

this is a miscompile of cc1plus.  Sorry for the runaround.



I'll try to reproduce the failure on gcc62, but I'm guessing it will take

a while to reach the failure point.


[Bug c++/55434] New: const array with elements initialized by constructor marked non-const in debug info

2012-11-21 Thread t56xjcu6dh at snkmail dot com


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



 Bug #: 55434

   Summary: const array with elements initialized by constructor

marked non-const in debug info

Classification: Unclassified

   Product: gcc

   Version: 4.7.3

Status: UNCONFIRMED

  Severity: minor

  Priority: P3

 Component: c++

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

ReportedBy: t56xjcu...@snkmail.com





Created attachment 28758

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

C++ source file



In this code:



struct s

{

int i1, i2;

};



const s c1 = { 1, 2 };

const s ca1[] = { { 1, 2} };

const s c2 = c1;

const s ca2[] = { c1 };



int main(void)

{

return 0;

}





gdb sees all variables as const except for ca2:



(gdb) ptype ca1

type = const struct s {

int i1;

int i2;

} [1]

(gdb) ptype ca2

type = struct s {

int i1;

int i2;

} [1]



The problem seems to be in split_nonconstant_init() in cp/typeck2.c;  when

TREE_READONLY (dest) is set to zero, the information that it was ever read-only

is lost before the DWARF record is written.



The following patch seems to fix the problem.  I would not be surprised if

there were a more elegant way of doing this.



(You might be wondering:  How did I find this, and why do I care?  I've been

working on something to read object files and then flag variables that raise

thread-safety issues because they are (1) global or static and (2) not const. 

Reading DWARF records works really well, except for this particular problem.)



Index: gcc/cp/typeck2.c

===

--- gcc/cp/typeck2.c(revision 193640)

+++ gcc/cp/typeck2.c(working copy)

@@ -633,6 +633,7 @@

 init = NULL_TREE;

   code = pop_stmt_list (code);

   DECL_INITIAL (dest) = init;

+  TREE_WASREADONLY (dest) = TREE_READONLY (dest);

   TREE_READONLY (dest) = 0;

 }

   else

Index: gcc/dwarf2out.c

===

--- gcc/dwarf2out.c(revision 193640)

+++ gcc/dwarf2out.c(working copy)

@@ -18031,7 +18031,9 @@

   if (decl_by_reference_p (decl_or_origin))

 add_type_attribute (var_die, TREE_TYPE (type), 0, 0, context_die);

   else

-add_type_attribute (var_die, type, TREE_READONLY (decl_or_origin),

+add_type_attribute (var_die, type,

+TREE_READONLY (decl_or_origin) ||

+TREE_WASREADONLY (decl_or_origin),

 TREE_THIS_VOLATILE (decl_or_origin), context_die);

 }



Index: gcc/tree.h

===

--- gcc/tree.h(revision 193640)

+++ gcc/tree.h(working copy)

@@ -464,8 +464,9 @@

   unsigned packed_flag : 1;

   unsigned user_align : 1;

   unsigned nameless_flag : 1;

+  unsigned wasreadonly_flag : 1;



-  unsigned spare : 12;

+  unsigned spare : 11;



   /* This field is only used with type nodes; the only reason it is present

  in tree_base instead of tree_type is to save space.  The size of the

@@ -1344,6 +1345,7 @@

Nonzero in a FUNCTION_DECL means this function should be treated

as const function (can only read its arguments).  */

 #define TREE_READONLY(NODE) (NON_TYPE_CHECK (NODE)-base.readonly_flag)

+#define TREE_WASREADONLY(NODE) (NON_TYPE_CHECK (NODE)-base.wasreadonly_flag)



 /* Value of expression is constant.  Always on in all ..._CST nodes.  May

also appear in an expression or decl where the value is constant.  */


[Bug c++/55434] const array with elements initialized by constructor marked non-const in debug info

2012-11-21 Thread t56xjcu6dh at snkmail dot com


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



--- Comment #1 from Louis Krupp t56xjcu6dh at snkmail dot com 2012-11-22 
00:37:04 UTC ---

Created attachment 28759

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

Proposed patch



I wouldn't describe this as elegant, but it seems to work.


[Bug c++/55434] const array with elements initialized by constructor marked non-const in debug info

2012-11-21 Thread t56xjcu6dh at snkmail dot com


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



--- Comment #2 from Louis Krupp t56xjcu6dh at snkmail dot com 2012-11-22 
00:40:49 UTC ---

g++ -v output from a version known to have this problem:



Using built-in specs.

COLLECT_GCC=g++

COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.7.2/lto-wrapper

Target: x86_64-redhat-linux

Configured with: ../configure --prefix=/usr --mandir=/usr/share/man

--infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla

--enable-bootstrap --enable-shared --enable-threads=posix

--enable-checking=release --disable-build-with-cxx

--disable-build-poststage1-with-cxx --with-system-zlib --enable-__cxa_atexit

--disable-libunwind-exceptions --enable-gnu-unique-object

--enable-linker-build-id --with-linker-hash-style=gnu

--enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin

--enable-initfini-array --enable-java-awt=gtk --disable-dssi

--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre

--enable-libgcj-multifile --enable-java-maintainer-mode

--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib

--with-ppl --with-cloog --with-tune=generic --with-arch_32=i686

--build=x86_64-redhat-linux

Thread model: posix

gcc version 4.7.2 20120921 (Red Hat 4.7.2-2) (GCC)


[Bug middle-end/54630] [4.8 Regression] GCC 4.8 --enable-languages=c build fails: Undefined symbols: ___cxa_guard_acquire and ___cxa_guard_release

2012-11-21 Thread ian at airs dot com


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



Ian Lance Taylor ian at airs dot com changed:



   What|Removed |Added



 CC||ian at airs dot com



--- Comment #18 from Ian Lance Taylor ian at airs dot com 2012-11-22 00:50:46 
UTC ---

You can also add linker options via the configure options --with-stage1-ldflags

and --with-boot-ldflags, q.v.



Although it is not documented specifically for GCC, you can also set LDFLAGS

when running make, as you can for all GNU programs.


[Bug middle-end/55198] [4.8 Regression] libquadmath/math/fmaq.c:233:7: internal compiler error

2012-11-21 Thread danglin at gcc dot gnu.org


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



--- Comment #3 from John David Anglin danglin at gcc dot gnu.org 2012-11-22 
03:13:32 UTC ---

In expand_expr_real:



(gdb) p debug_rtx (orig_op0)

(mem/c:BLK (plus:SI (reg/f:SI 91 virtual-stack-vars)

(const_int 48 [0x30])) [6 v+0 S16 A64])

$25 = 10

(gdb) p debug_rtx (op0) 

(mem/c:BLK (plus:SI (reg/f:SI 91 virtual-stack-vars)

(const_int 48 [0x30])) [6 v+0 S16 A64])

$26 = 10

(gdb) p mode1

$27 = TFmode

(gdb) p must_force_mem

$28 = 1

(gdb) p offset

$29 = (tree) 0x0

(gdb) p mode2

$30 = BLKmode

(gdb) p bitpos

$31 = 0

(gdb) p bitsize

$32 = 128

(gdb) p modifier

$41 = EXPAND_MEMORY

(gdb) p target

$42 = (rtx) 0x0

(gdb) p ext_mode

$43 = TFmode



(gdb) bt

#0 

_Z18expand_expr_real_1P9tree_nodeP7rtx_def12machine_mode15expand_modifierPS2_

(exp=0x7af2d2a0, target=0x0, tmode=VOIDmode, modifier=EXPAND_MEMORY, 

alt_rtl=0x0) at ../../gcc/gcc/expr.c:10006

#1  0x0045c3b8 in

_Z16expand_expr_realP9tree_nodeP7rtx_def12machine_mode15expand_modifierPS2_

(exp=0x7af2d2a0, target=0x0, tmode=VOIDmode, 

modifier=EXPAND_MEMORY, alt_rtl=0x0) at ../../gcc/gcc/expr.c:7816

#2  0x0092f538 in

_ZL11expand_exprP9tree_nodeP7rtx_def12machine_mode15expand_modifier

(exp=0x7af2d2a0, target=0x0, mode=VOIDmode, modifier=EXPAND_MEMORY)

at ../../gcc/gcc/expr.h:444

#3  0x00933588 in _ZL19expand_asm_operandsP9tree_nodeS0_S0_S0_S0_ij (

string=0x7af6cf78, outputs=0x0, inputs=0x7af2e288, clobbers=0x0, 

labels=0x0, vol=1, locus=2147483912) at ../../gcc/gcc/stmt.c:890

#4  0x00934698 in _Z15expand_asm_stmtP18gimple_statement_d (stmt=0x7af3c7e0)

at ../../gcc/gcc/stmt.c:1153

#5  0x0028ad94 in _ZL20expand_gimple_stmt_1P18gimple_statement_d (

stmt=0x7af3c7e0) at ../../gcc/gcc/cfgexpand.c:2150

#6  0x0028b554 in _ZL18expand_gimple_stmtP18gimple_statement_d (

stmt=0x7af3c7e0) at ../../gcc/gcc/cfgexpand.c:2305

#7  0x00292b8c in _ZL25expand_gimple_basic_blockP15basic_block_defb (

bb=0x7af42b00, disable_tail_calls=false) at ../../gcc/gcc/cfgexpand.c:4084

#8  0x00294ecc in gimple_expand_cfg() () at ../../gcc/gcc/cfgexpand.c:4603

#9  0x007ddd44 in _Z16execute_one_passP8opt_pass (

pass=0x40033b20 pass_expand) at ../../gcc/gcc/passes.c:2327

---Type return to continue, or q return to quit---

#10 0x007de108 in _Z17execute_pass_listP8opt_pass (

pass=0x40033b20 pass_expand) at ../../gcc/gcc/passes.c:2387

#11 0x002d6130 in _ZL15expand_functionP11cgraph_node (node=0x7aed22a0)

at ../../gcc/gcc/cgraphunit.c:1641

#12 0x002d6718 in _ZL20expand_all_functionsv ()

at ../../gcc/gcc/cgraphunit.c:1745

#13 0x002d7734 in _Z7compilev () at ../../gcc/gcc/cgraphunit.c:2043

#14 0x002d79ac in finalize_compilation_unit() ()

at ../../gcc/gcc/cgraphunit.c:2120

#15 0x00079300 in _Z27c_write_global_declarationsv ()

at ../../gcc/gcc/c/c-decl.c:10120

#16 0x00957404 in _ZL12compile_filev () at ../../gcc/gcc/toplev.c:559

#17 0x0095abbc in _ZL10do_compilev () at ../../gcc/gcc/toplev.c:1881

#18 0x0095aed0 in _Z11toplev_mainiPPc (argc=14, argv=0x7eff052c)

at ../../gcc/gcc/toplev.c:1957

#19 0x00dc62c4 in main (argc=14, argv=0x7eff052c) at ../../gcc/gcc/main.c:36

(gdb) c

Continuing.



Breakpoint 9,

_Z18expand_expr_real_1P9tree_nodeP7rtx_def12machine_mode15expand_modifierPS2_

(exp=0x7af2d2a0, target=0x0, tmode=VOIDmode, 

modifier=EXPAND_MEMORY, alt_rtl=0x0) at ../../gcc/gcc/expr.c:10011

10011if (TREE_CODE (type) == RECORD_TYPE  BYTES_BIG_ENDIAN

(gdb) p debug_rtx (op0)

(reg:TF 767)

$44 = 10



Think the problem is this asm operand is being treated as bitfield.


[Bug other/55435] New: [asan] implement an attribute to disable asan instrumentation for a particular function

2012-11-21 Thread konstantin.s.serebryany at gmail dot com


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



 Bug #: 55435

   Summary: [asan] implement an attribute to disable asan

instrumentation for a particular function

Classification: Unclassified

   Product: gcc

   Version: unknown

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: other

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

ReportedBy: konstantin.s.serebry...@gmail.com

CC: dnovi...@google.com, dseke...@redhat.com,

dvyu...@google.com, hjl.to...@gmail.com,

ja...@redhat.com, w...@gcc.gnu.org





The clang implementation of asan has

__attribute__((no_address_safety_analysis)): 



(http://clang.llvm.org/docs/AddressSanitizer.html#no_address_safety_analysis)



Some code should not be instrumented by AddressSanitizer. One may use the

function attribute no_address_safety_analysis to disable instrumentation of a

particular function. This attribute may not be supported by other compilers, so

we suggest to use it together with __has_feature(address_sanitizer). Note:

currently, this attribute will be lost if the function is inlined.





The gcc implementation needs a similar attribute (preferably, with the same

syntax and semantics)



One example where this attribute is used: V8 stack profiler which touches

random bytes on the stack.


  1   2   >