[Bug rtl-optimization/55747] Extra registers are saved in functions that only call noreturn functions

2013-01-06 Thread hp at gcc dot gnu.org


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



Hans-Peter Nilsson  changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2013-01-06

 CC||hp at gcc dot gnu.org

 Ever Confirmed|0   |1



--- Comment #2 from Hans-Peter Nilsson  2013-01-06 
08:26:11 UTC ---

Similarly observed for cris-elf with -O2, r194929, JFTR.



If this changes, some attribute markup should be added to keep return-addresses

for noreturn functions, for sake of stack-traces.  Also return-addresses need

to be generally kept when -fexceptions and similar are in effect, as noreturn

functions can still throw.


[Bug target/55712] cpuinfo.c doesn't compile for x86-64 with medium memory model

2013-01-06 Thread uros at gcc dot gnu.org


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



--- Comment #9 from uros at gcc dot gnu.org 2013-01-06 08:45:48 UTC ---

Author: uros

Date: Sun Jan  6 08:45:43 2013

New Revision: 194937



URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194937

Log:

Backport from mainline

2013-01-03  Uros Bizjak  



PR target/55712

* config/i386/i386-c.c (ix86_target_macros_internal): Depending on

selected code model, define __code_mode_small__, __code_model_medium__,

__code_model_large__, __code_model_32__ or __code_model_kernel__.

* config/i386/cpuid.h (__cpuid, __cpuid_count) [__i386__]: Prefix

xchg temporary register with %k.  Declare temporary register as

early clobbered.

[__x86_64__]: For medium and large code models, preserve %rbx register.





Modified:

branches/gcc-4_7-branch/gcc/ChangeLog

branches/gcc-4_7-branch/gcc/config/i386/cpuid.h

branches/gcc-4_7-branch/gcc/config/i386/i386-c.c


[Bug target/55712] cpuinfo.c doesn't compile for x86-64 with medium memory model

2013-01-06 Thread ubizjak at gmail dot com


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



Uros Bizjak  changed:



   What|Removed |Added



 Status|ASSIGNED|RESOLVED

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

   |atches/2012-12/msg01391.htm |atches/2012-12/msg01484.htm

   |l   |l

 Resolution||FIXED

   Target Milestone|4.8.0   |4.7.3



--- Comment #10 from Uros Bizjak  2013-01-06 09:15:43 
UTC ---

Fixed.


[Bug c++/55885] New: Modulo operator crashes for int and long variables if they have minimal value

2013-01-06 Thread klaus.wieder at endolandia dot de


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



 Bug #: 55885

   Summary: Modulo operator crashes for int and long variables if

they have minimal value

Classification: Unclassified

   Product: gcc

   Version: 4.2.1

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c++

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

ReportedBy: klaus.wie...@endolandia.de





Error description in source file

-



Compiled with

-

i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658)

(LLVM build 2336.11.00) on MAC OS X Version 10.7.5 (Lion)

-



Result of gcc -v:

-

Using built-in specs.

Target: i686-apple-darwin11

Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.11~67/src/configure

--disable-checking --enable-werror

--prefix=/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2

--mandir=/share/man --enable-languages=c,objc,c++,obj-c++

--program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/

--with-slibdir=/usr/lib --build=i686-apple-darwin11

--enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~67/dst-llvmCore/Developer/usr/local

--program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11

--target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1

Thread model: posix

gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

-



Compiler and linker output

-

make all 

Building file: ../src/iotest.cpp

Invoking: GCC C++ Compiler

g++ -O0 -g3 -Wall -Wextra -c -fmessage-length=0 -MMD -MP -MF"src/iotest.d"

-MT"src/iotest.d" -o "src/iotest.o" "../src/iotest.cpp"

Finished building: ../src/iotest.cpp



Building target: iotest

Invoking: MacOS X C++ Linker

g++  -o "iotest"  ./src/iotest.o   

Finished building target: iotest

-



Compiling with options -fno-strict-aliasing -fwrapv does not make a difference

-



file: iotest.cpp

-

#include 

#include 



// Assumption: If a is a signed variable, then a % -1 should always be 0

//

// okif myType is of type char or short

// fails if myType is of type int  or long



int main() {



typedef int myType;



myType c;



myType a = std::numeric_limits::min();

intb = -1;



// always ok

c = a % -1;

std::cout << a << ", " << b << ", " << c << std::endl;



// signals EXC ARITHMETIC:Arithmetic exception 

// if myType is int or is long 

c = a % b;

std:: cout << a << ", " << b << ", " << c << std::endl;



return 0;

}


[Bug c++/55885] Modulo operator crashes for int and long variables if they have minimal value

2013-01-06 Thread sch...@linux-m68k.org


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



Andreas Schwab  changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||INVALID



--- Comment #1 from Andreas Schwab  2013-01-06 11:01:33 
UTC ---

INT_MIN % -1 is undefined due to overflow.  -fwrapv has no effect on division

operations.


[Bug libstdc++/52015] std::to_string does not work under MinGW

2013-01-06 Thread redi at gcc dot gnu.org


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



--- Comment #22 from Jonathan Wakely  2013-01-06 
11:31:03 UTC ---

OS wasn't the right term, but you need to update mingw32-w64 to a recent

version from trunk. That requirement is not suitable for a release branch.


[Bug c++/55885] Modulo operator crashes for int and long variables if they have minimal value

2013-01-06 Thread kwieder at polytechnic dot edu.na


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



--- Comment #2 from kwieder at polytechnic dot edu.na 2013-01-06 12:14:16 UTC 
---

Thanks for the quick response.



Why is



INT_MIN  % -1 



ok



and why is 



int b = -1;

INT_MIN % b 



not ok.



I"m well aware of  INT_MIN /  -1 is overflowing. If your are using a division

for the % operator, which you probably do, then INT_MIN % -1 should also crash.



Regards,

Klaus 







On Jan 6, 2013, at 1:01 PM, sch...@linux-m68k.org wrote:



> if they have minimal value

> 

> Date: Sun, 06 Jan 2013 11:01:33 +

> 

> X-Bugzilla-Reason: Reporter

> 

> X-Bugzilla-Type: changed

> 

> X-Bugzilla-Watch-Reason: None

> 

> X-Bugzilla-Product: gcc

> 

> X-Bugzilla-Component: c++

> 

> X-Bugzilla-Keywords: 

> 

> X-Bugzilla-Severity: normal

> 

> X-Bugzilla-Who: sch...@linux-m68k.org

> 

> X-Bugzilla-Status: RESOLVED

> 

> X-Bugzilla-Priority: P3

> 

> X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org

> 

> X-Bugzilla-Target-Milestone: ---

> 

> X-Bugzilla-Changed-Fields: Status Resolution

> 

> Message-ID: 

> 

> In-Reply-To: 

> 

> References: 

> 

> X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/

> 

> Auto-Submitted: auto-generated

> 

> Content-Type: text/plain; charset="UTF-8"

> 

> MIME-Version: 1.0

> 

> 

> 

> 

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

> 

> 

> 

> Andreas Schwab  changed:

> 

> 

> 

>   What|Removed |Added

> 

> 

> 

> Status|UNCONFIRMED |RESOLVED

> 

> Resolution||INVALID

> 

> 

> 

> --- Comment #1 from Andreas Schwab  2013-01-06 
> 11:01:33 UTC ---

> 

> INT_MIN % -1 is undefined due to overflow.  -fwrapv has no effect on division

> 

> operations.

> 

> 

> 

> -- 

> 

> Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email

> 

> --- You are receiving this mail because: ---

> 

> You reported the bug.


[Bug c++/55885] Modulo operator crashes for int and long variables if they have minimal value

2013-01-06 Thread redi at gcc dot gnu.org


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



--- Comment #3 from Jonathan Wakely  2013-01-06 
12:26:13 UTC ---

Are you asking why undefined behaviour doesn't have consistent results?

http://c-faq.com/ansi/experiment.html


[Bug fortran/54678] second call to get_environment_variable gives valgrind warning with 8-byte integers

2013-01-06 Thread burnus at gcc dot gnu.org


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



--- Comment #3 from Tobias Burnus  2013-01-06 
12:43:49 UTC ---

Author: burnus

Date: Sun Jan  6 12:43:45 2013

New Revision: 194948



URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194948

Log:

2013-01-06  Tobias Burnus  



PR fortran/54678

* intrinsics/env.c (get_environment_variable_i8): Don't use

uninitialized variable.





Modified:

trunk/libgfortran/ChangeLog

trunk/libgfortran/intrinsics/env.c


[Bug c++/55885] Modulo operator crashes for int and long variables if they have minimal value

2013-01-06 Thread kwieder at polytechnic dot edu.na


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



--- Comment #4 from kwieder at polytechnic dot edu.na 2013-01-06 12:44:42 UTC 
---

Hi Jonathan,



According to the the standard C++ implementation



(a % -b)  <==>  (a % b), therefore



(INT_MIN % -1)  <==>  (INT_MIN %1) == 0





Neither INT_MIN % -1 nor INT_MIN %1 require a division, therefore there should

be no undefined behaviour in the first place.



Regards, 

Klaus







On Jan 6, 2013, at 2:26 PM, redi at gcc dot gnu.org wrote:



--- Comment #3 from Jonathan Wakely  2013-01-06

12:26:13 UTC ---



Are you asking why undefined behaviour doesn't have consistent results?


[Bug fortran/54678] second call to get_environment_variable gives valgrind warning with 8-byte integers

2013-01-06 Thread burnus at gcc dot gnu.org


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



Tobias Burnus  changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #4 from Tobias Burnus  2013-01-06 
12:46:16 UTC ---

FIXED on the trunk (4.8).



Thanks for the report - and sorry for the delay.



Thomas: Thanks for the reminder.


[Bug rtl-optimization/55845] [4.8 Regression] 454.calculix miscompares with -march=btver2 -O3 -ffastmath -fschedule-insns -mvzeroupper for test data run

2013-01-06 Thread ubizjak at gmail dot com


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



Uros Bizjak  changed:



   What|Removed |Added



 CC||bonzini at gnu dot org



--- Comment #9 from Uros Bizjak  2013-01-06 13:23:54 
UTC ---

It is try_head_merge_bb that moves unspec_volatile to the wrong place. However,

the core of the problem lies in can_move_insns_accross, which does not

special-case unspec_volatiles.



The untested df-problems.c patch that fixes the failing testcase:



--cut here--

Index: df-problems.c

===

--- df-problems.c   (revision 194945)

+++ df-problems.c   (working copy)

@@ -3916,6 +3916,10 @@ can_move_insns_across (rtx from, rtx to, rtx acros

break;

   if (NONDEBUG_INSN_P (insn))

{

+ /* Do not move unspec_volatile insns.  */

+ if (GET_CODE (PATTERN (insn)) == UNSPEC_VOLATILE)

+   break;

+

  if (may_trap_or_fault_p (PATTERN (insn))

  && (trapping_insns_in_across || other_branch_live != NULL))

break;

--cut here--



Adding Paolo B. to CC.


[Bug bootstrap/55886] New: gcc/configure.ac problems lead to GCC 4.7.2 not building for x86_64-pc-mingw64

2013-01-06 Thread devurandom at gmx dot net

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

 Bug #: 55886
   Summary: gcc/configure.ac problems lead to GCC 4.7.2 not
building for x86_64-pc-mingw64
Classification: Unclassified
   Product: gcc
   Version: 4.7.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: devuran...@gmx.net


gcc/configure.ac contains several checks for mingw hosts, which are tied to
mingw32 instead of generic mingw. This might lead to problems when
crosscompiling a x86_64-pc-mingw64 compiler.

Possibly problematic lines in gcc-4.7.2/gcc/configure.ac:
case $host in   
1453: *-*-mingw32*)
use_cxa_atexit=yes

case $host_os in
1656:  win32 | pe | cygwin* | mingw32* | uwin*)
if test "x$enable_win32_registry" != xno; then

[case $target_os in 
2565:  win32 | pe | cygwin* | mingw32* | uwin*)
# Need to check that we generated the correct relocation for the

case $target_os in
3604:  cygwin* | pe | mingw32* | interix*)
# Recent binutils allows the three-operand form of ".comm" on PE.  This

They should probably use mingw* instead of mingw32*.

At least the last one (gcc/configure.ac:3604) is wrong and leads to
HAVE_GAS_ALIGNED_COMM being undefined for mingw64, which makes gcc/options.c
(autogenerated file) fail to compile:
options.c:952:3: error: ‘HAVE_GAS_ALIGNED_COMM’ undeclared here (not in a
function)

See also: https://bugs.gentoo.org/show_bug.cgi?id=447708


[Bug libfortran/48615] Invalid UP/DOWN rounding with E and ES descriptors

2013-01-06 Thread burnus at gcc dot gnu.org


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



Tobias Burnus  changed:



   What|Removed |Added



 Status|ASSIGNED|RESOLVED

 CC||burnus at gcc dot gnu.org

 Resolution||FIXED



--- Comment #16 from Tobias Burnus  2013-01-06 
14:13:15 UTC ---

Close as FIXED (in the 4.7 trunk; hence, in the 4.7.0 release.)



The fix was committed on 2011-04-29 for the trunk (i.e. 4.7). As there was no

activity for almost two years and as it is no regression, I don't think we will

ever port it back to 4.6.


[Bug fortran/55887] New: [OOP][F2008] ICE with CLASS and data-target pointer association in (default) initialization

2013-01-06 Thread burnus at gcc dot gnu.org


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



 Bug #: 55887

   Summary: [OOP][F2008] ICE with CLASS and data-target pointer

association in (default) initialization

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Keywords: ice-on-valid-code

  Severity: normal

  Priority: P3

 Component: fortran

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

ReportedBy: bur...@gcc.gnu.org

Blocks: 45290, 51076





Follow up to PR 55763 comment 14/15.



For CLASS(t) and CLASS(*), gfortran ICEs for pointer default initializers/

initializers which point to a data target instead of NULL.



Example:



type t

end type t

type(t), target :: x

class(*), pointer :: ptr2 => x

if (same_type_as (ptr2, x) .neqv. .TRUE.) call abort()

  end





That's a Fortran 2008 feature. (Cf. also PR51076, PR45290 and PR50410 comment

9.)


[Bug fortran/40737] Pointer references sometimes fail to define "span" symbols

2013-01-06 Thread burnus at gcc dot gnu.org


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



Tobias Burnus  changed:



   What|Removed |Added



 CC||burnus at gcc dot gnu.org



--- Comment #15 from Tobias Burnus  2013-01-06 
14:56:34 UTC ---

For another test case - using CLASS(*) - see PR 55763 comment 0 (last example);

see also the analysis to that example in PR 55763 comment 6.


[Bug libstdc++/55594] [4.8 Regression] -Wa,-nH incorrectly added to compile line of all targets

2013-01-06 Thread jakub at gcc dot gnu.org


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



Jakub Jelinek  changed:



   What|Removed |Added



 CC||jakub at gcc dot gnu.org



--- Comment #4 from Jakub Jelinek  2013-01-06 
15:10:01 UTC ---

So, can we restrict the -Wa,-nH check to *-*-solaris*, or do also say -Wa,-V

or whatever with Solaris as prints version and scan its output?


[Bug tree-optimization/55888] New: ICE in in bitmap_set_replace_value, at tree-ssa-pre.c:867

2013-01-06 Thread rmansfield at qnx dot com

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

 Bug #: 55888
   Summary: ICE in in bitmap_set_replace_value, at
tree-ssa-pre.c:867
Classification: Unclassified
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: rmansfi...@qnx.com


Using

gcc version 4.8.0 20130106 (experimental) [trunk revision 194948] (GCC) 

$ ./xgcc -B. -O2 ~/ice.i -m32 -c
/home/ryan/ice.i: In function ‘protobuf_c_message_pack’:
/home/ryan/ice.i:103:1: internal compiler error: in bitmap_set_replace_value,
at tree-ssa-pre.c:867
 protobuf_c_message_pack (const ProtobufCMessage * message, uint8_t * out)
 ^
0xa0644b bitmap_set_replace_value
../../gcc/tree-ssa-pre.c:867
0xa0644b bitmap_value_replace_in_set
../../gcc/tree-ssa-pre.c:887
0xa0771a phi_translate_set
../../gcc/tree-ssa-pre.c:1821
0xa0822d defer_or_phi_translate_block
../../gcc/tree-ssa-pre.c:2116
0xa0822d compute_antic_aux
../../gcc/tree-ssa-pre.c:2178
0xa0822d compute_antic
../../gcc/tree-ssa-pre.c:2495
0xa0b679 do_pre
../../gcc/tree-ssa-pre.c:4723
0xa0b679 do_pre
../../gcc/tree-ssa-pre.c:4693
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.

Looks like it was introduced at rev194906 

http://gcc.gnu.org/viewcvs?view=revision&revision=194906


[Bug tree-optimization/55888] ICE in in bitmap_set_replace_value, at tree-ssa-pre.c:867

2013-01-06 Thread rmansfield at qnx dot com


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



--- Comment #1 from Ryan Mansfield  2013-01-06 
15:17:56 UTC ---

Created attachment 29088

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

preprocessed src



Preprocessed source


[Bug fortran/55763] Issues with some simpler CLASS(*) programs

2013-01-06 Thread burnus at gcc dot gnu.org


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



--- Comment #21 from Tobias Burnus  2013-01-06 
15:33:24 UTC ---

(In reply to comment #6)

> To the last test case of comment 0:



I mentioned this example in the array-descriptor/subpointer PR 40737 to make

sure it is not forgotten.





(In reply to comment #14)

> The following valid code gives an ICE:

> class(*), pointer :: ptr2 => x



That's now PR 55887. For the diagnostic part, see patch

http://gcc.gnu.org/ml/fortran/2013-01/msg00025.html





(In reply to comment #19)

> Great!  I extended the example from comment #10 to find:



> class(myobj) :: this

> select type (this)

> type is (integer)





Thanks for reporting the ICE on invalid code; I submitted a patch for this at

http://gcc.gnu.org/ml/fortran/2013-01/msg00046.html


[Bug libstdc++/55594] [4.8 Regression] -Wa,-nH incorrectly added to compile line of all targets

2013-01-06 Thread ro at CeBiTec dot Uni-Bielefeld.DE


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



--- Comment #5 from ro at CeBiTec dot Uni-Bielefeld.DE  2013-01-06 15:42:03 UTC ---

> --- Comment #4 from Jakub Jelinek  2013-01-06 
> 15:10:01 UTC ---

> So, can we restrict the -Wa,-nH check to *-*-solaris*, or do also say -Wa,-V

> or whatever with Solaris as prints version and scan its output?



I plan to restrict the check to Solaris.  I'll try to come up with

something later today.



Rainer


[Bug fortran/45836] [OOP] Type Bound Procedure Error - Type Mismatch

2013-01-06 Thread mikael at gcc dot gnu.org


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



--- Comment #3 from Mikael Morin  2013-01-06 
15:50:23 UTC ---

Author: mikael

Date: Sun Jan  6 15:50:09 2013

New Revision: 194949



URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194949

Log:

PR fortran/42769

PR fortran/45836

PR fortran/45900

* module.c (read_module): Don't reuse local symtree if the associated

symbol isn't exactly the one wanted.  Don't reuse local symtree if it is

ambiguous.

* resolve.c (resolve_call): Use symtree's name instead of symbol's to

lookup the symtree.



PR fortran/42769

PR fortran/45836

PR fortran/45900

* gfortran.dg/use_23.f90: New test.

* gfortran.dg/use_24.f90: New test.

* gfortran.dg/use_25.f90: New test.

* gfortran.dg/use_26.f90: New test.

* gfortran.dg/use_27.f90: New test.





Added:

trunk/gcc/testsuite/gfortran.dg/use_23.f90

trunk/gcc/testsuite/gfortran.dg/use_24.f90

trunk/gcc/testsuite/gfortran.dg/use_25.f90

trunk/gcc/testsuite/gfortran.dg/use_26.f90

trunk/gcc/testsuite/gfortran.dg/use_27.f90

Modified:

trunk/gcc/fortran/ChangeLog

trunk/gcc/fortran/module.c

trunk/gcc/fortran/resolve.c

trunk/gcc/testsuite/ChangeLog


[Bug fortran/42769] [OOP] ICE in resolve_typebound_procedure

2013-01-06 Thread mikael at gcc dot gnu.org


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



--- Comment #36 from Mikael Morin  2013-01-06 
15:50:19 UTC ---

Author: mikael

Date: Sun Jan  6 15:50:09 2013

New Revision: 194949



URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194949

Log:

PR fortran/42769

PR fortran/45836

PR fortran/45900

* module.c (read_module): Don't reuse local symtree if the associated

symbol isn't exactly the one wanted.  Don't reuse local symtree if it is

ambiguous.

* resolve.c (resolve_call): Use symtree's name instead of symbol's to

lookup the symtree.



PR fortran/42769

PR fortran/45836

PR fortran/45900

* gfortran.dg/use_23.f90: New test.

* gfortran.dg/use_24.f90: New test.

* gfortran.dg/use_25.f90: New test.

* gfortran.dg/use_26.f90: New test.

* gfortran.dg/use_27.f90: New test.





Added:

trunk/gcc/testsuite/gfortran.dg/use_23.f90

trunk/gcc/testsuite/gfortran.dg/use_24.f90

trunk/gcc/testsuite/gfortran.dg/use_25.f90

trunk/gcc/testsuite/gfortran.dg/use_26.f90

trunk/gcc/testsuite/gfortran.dg/use_27.f90

Modified:

trunk/gcc/fortran/ChangeLog

trunk/gcc/fortran/module.c

trunk/gcc/fortran/resolve.c

trunk/gcc/testsuite/ChangeLog


[Bug fortran/45900] [OOP] Static TBP resolved incorrectly

2013-01-06 Thread mikael at gcc dot gnu.org


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



--- Comment #4 from Mikael Morin  2013-01-06 
15:50:24 UTC ---

Author: mikael

Date: Sun Jan  6 15:50:09 2013

New Revision: 194949



URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194949

Log:

PR fortran/42769

PR fortran/45836

PR fortran/45900

* module.c (read_module): Don't reuse local symtree if the associated

symbol isn't exactly the one wanted.  Don't reuse local symtree if it is

ambiguous.

* resolve.c (resolve_call): Use symtree's name instead of symbol's to

lookup the symtree.



PR fortran/42769

PR fortran/45836

PR fortran/45900

* gfortran.dg/use_23.f90: New test.

* gfortran.dg/use_24.f90: New test.

* gfortran.dg/use_25.f90: New test.

* gfortran.dg/use_26.f90: New test.

* gfortran.dg/use_27.f90: New test.





Added:

trunk/gcc/testsuite/gfortran.dg/use_23.f90

trunk/gcc/testsuite/gfortran.dg/use_24.f90

trunk/gcc/testsuite/gfortran.dg/use_25.f90

trunk/gcc/testsuite/gfortran.dg/use_26.f90

trunk/gcc/testsuite/gfortran.dg/use_27.f90

Modified:

trunk/gcc/fortran/ChangeLog

trunk/gcc/fortran/module.c

trunk/gcc/fortran/resolve.c

trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/55845] [4.8 Regression] 454.calculix miscompares with -march=btver2 -O3 -ffastmath -fschedule-insns -mvzeroupper for test data run

2013-01-06 Thread ubizjak at gmail dot com


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



Uros Bizjak  changed:



   What|Removed |Added



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

   ||atches/2013-01/msg00252.htm

   ||l



--- Comment #10 from Uros Bizjak  2013-01-06 15:50:49 
UTC ---

Patch at [1].



[1] http://gcc.gnu.org/ml/gcc-patches/2013-01/msg00252.html


[Bug tree-optimization/55888] [4.8 regression] ICE in bitmap_set_replace_value, at tree-ssa-pre.c:867

2013-01-06 Thread ebotcazou at gcc dot gnu.org


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



Eric Botcazou  changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2013-01-06

 CC||ebotcazou at gcc dot

   ||gnu.org

Version|unknown |4.8.0

   Target Milestone|--- |4.8.0

Summary|ICE in in   |[4.8 regression] ICE in

   |bitmap_set_replace_value,   |bitmap_set_replace_value,

   |at tree-ssa-pre.c:867   |at tree-ssa-pre.c:867

 Ever Confirmed|0   |1

   Severity|normal  |major



--- Comment #2 from Eric Botcazou  2013-01-06 
17:59:31 UTC ---

I have it on SQLite.


[Bug fortran/55618] [4.6/4.7/4.8 Regression] Failures with ISO_Varying_String test suite

2013-01-06 Thread pault at gcc dot gnu.org


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



--- Comment #4 from Paul Thomas  2013-01-06 18:48:07 
UTC ---

Created attachment 29089

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

modified version of one of the failing tests



Confirmed



This is a failure of the scalarizer, which is why I have bumped up its

importance.



The final invocation of SPLIT, from within a scalarizer loop, is passing the

character argument CHAR(set) as a pointer to a pointer.



Replacing this call with one to a contained function foo (see attachment),

results in success for 'choice' 0 or 2 (explicit loop or passing VST, rather

than character)

subroutine foo (choice)

  integer :: choice

  if (choice == 1) then

CALL SPLIT(strar,wrdar,CHAR(set),separ)

  else if (choice == 2) then

CALL SPLIT(strar,wrdar,set,separ)

  else

DO i=1,ndim

  DO j=1,ndim

CALL SPLIT(strar(i,j),wrdar(i,j),CHAR(set),separ(i,j))

  end do

end do

  end if

end subroutine 



The code produced by this appears below and is the reason for my assertion that

this is a scalarizer problem.  I suspect from inspection that VST30/31 fail for

the same reason.



I have added Mikael in copy, hoping that his more recent exposure to the

scalarizer will help identify the root cause more quickly.



Cheers



Paul



foo (integer(kind=4) & restrict choice)

{

  if (*choice == 1)

{

  {

character(kind=1)[1:MAX_EXPR ] * D.2020;

void * restrict D.2018;

integer(kind=4) D.2017;

character(kind=1)[1:MAX_EXPR ] * pstr.26;

integer(kind=4) D.2015;

struct varying_string * D.2014;



D.2014 = &set;

D.2015 = len_ (D.2014);

D.2017 = MAX_EXPR  * 64;

D.2018 = (void * restrict) __builtin_malloc (MAX_EXPR <(unsigned long)

D.2017, 1>);

pstr.26 = (character(kind=1)[1:MAX_EXPR ] *) D.2018;

char_auto (pstr.26, MAX_EXPR , D.2014);

D.2020 = pstr.26;

{

  integer(kind=8) S.27;



  S.27 = 1;

  while (1)

{

  if (S.27 > 2) goto L.10;

  {

integer(kind=8) D.2025;

integer(kind=8) D.2024;

integer(kind=8) D.2023;

integer(kind=8) S.28;



D.2023 = S.27 * 2 + -3;

D.2024 = S.27 * 2 + -3;

D.2025 = S.27 * 2 + -3;

S.28 = 1;

while (1)

  {

if (S.28 > 2) goto L.9;

split_ch (&strar[S.28 + D.2023], &wrdar[S.28 + D.2024],

&D.2020, &separ[S.28 + D.2025], 0B, MAX_EXPR );

S.28 = S.28 + 1;

  }

L.9:;

  }

  S.27 = S.27 + 1;

}

  L.10:;

}

{

  void * D.2019;



  D.2019 = (void *) pstr.26;

  if (D.2019 != 0B)

{

  __builtin_free (D.2019);

}

}

  }

}

  else

{

  if (*choice == 2)

{

  {

struct varying_string D.2029;



D.2029 = set;

{

  integer(kind=8) S.29;



  S.29 = 1;

  while (1)

{

  if (S.29 > 2) goto L.12;

  {

integer(kind=8) D.2034;

integer(kind=8) D.2033;

integer(kind=8) D.2032;

integer(kind=8) S.30;



D.2032 = S.29 * 2 + -3;

D.2033 = S.29 * 2 + -3;

D.2034 = S.29 * 2 + -3;

S.30 = 1;

while (1)

  {

if (S.30 > 2) goto L.11;

split_vs (&strar[S.30 + D.2032], &wrdar[S.30 + D.2033],

&D.2029, &separ[S.30 + D.2034], 0B);

S.30 = S.30 + 1;

  }

L.11:;

  }

  S.29 = S.29 + 1;

}

  L.12:;

}

  }

}

  else

{

  i = 1;

  if (i <= 2)

{

  while (1)

{

  {

logical(kind=4) D.2049;



j = 1;

if (j <= 2)

  {

while (1)

  {

{

  logical(kind=4) D.2048;



  {

void * restrict D.2046;

integer(kind=4) D.2045;

character(kind=1)[1:MAX_EXPR ] *

pstr.31;

integer(kind=4) D.2043;

struct varying_string * D.2042;



D.2

[Bug fortran/55117] Programs fails to read namelist (contains derived types objects)

2013-01-06 Thread jvdelisle at gcc dot gnu.org


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



--- Comment #10 from Jerry DeLisle  2013-01-06 
18:51:07 UTC ---

This bug appears to be unrelated to the other two namelist bugs.  It is related

to not seeing the ending '/' marker.  I have more testing to go before

submitting a patch.  The initial fix is to catch it in the do loop inside

list_read.c at about line 2812.  I still need to confirm if the reads are

actually correct.


[Bug middle-end/55889] New: [4.8 Regression] ICE: in move_op_ascend, at sel-sched.c:6153 with -fschedule-insns -fselective-scheduling

2013-01-06 Thread dje at gcc dot gnu.org


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



 Bug #: 55889

   Summary: [4.8 Regression] ICE: in move_op_ascend, at

sel-sched.c:6153 with -fschedule-insns

-fselective-scheduling

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: middle-end

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

ReportedBy: d...@gcc.gnu.org





An ICE has appeared for target POWER when compiling

testsuite/gcc.dg/tree-prof/pr50907.c



$ /tmp/20130104/gcc/xgcc -B/tmp/20130104/gcc/

/nasfarm/dje/src/src/gcc/testsuite/gcc.dg/tree-prof/pr50907.c 

-fno-diagnostics-show-caret   -O -freorder-blocks-and-partition

-fschedule-insns -fselective-scheduling -fpic -pthread -fprofile-generate

-D_PROFILE_GENERATE  -lm   -o /tmp/20130104/gcc/testsuite/gcc/pr50907.x01



/nasfarm/dje/src/src/gcc/testsuite/gcc.dg/tree-prof/pr45354.c: In function

'test_ifelse2':

/nasfarm/dje/src/src/gcc/testsuite/gcc.dg/tree-prof/pr45354.c:23:1: internal

compiler error: in move_op_ascend, at sel-sched.c:6153


[Bug middle-end/55889] [4.8 Regression] ICE: in move_op_ascend, at sel-sched.c:6153 with -fschedule-insns -fselective-scheduling

2013-01-06 Thread dje at gcc dot gnu.org


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



David Edelsohn  changed:



   What|Removed |Added



 Target||powerpc*-*-*

 Status|UNCONFIRMED |NEW

   Keywords||ice-on-valid-code

   Last reconfirmed||2013-01-06

 Ever Confirmed|0   |1

   Target Milestone|--- |4.8.0



--- Comment #1 from David Edelsohn  2013-01-06 18:56:31 
UTC ---

Confirmed.


[Bug libstdc++/55594] [4.8 Regression] -Wa,-nH incorrectly added to compile line of all targets

2013-01-06 Thread ro at gcc dot gnu.org


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



--- Comment #6 from Rainer Orth  2013-01-06 20:23:40 UTC 
---

Created attachment 29090

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

proposed patch



David, could you please try the attached patch?



I've tested it so far with c++-only bootstraps on x86_64-unknown-linux-gnu

(verifying that the -nH test is gone from libstdc++-v3 config.log and

HWCAP_FLAGS

is empty) and i386-pc-solaris2.10 with Sun as (where the -nH test is performed

and HWCAP_FLAGS is set as expected).



Sorry it took me so long to get back to this.



  Rainer


[Bug fortran/55852] [4.6/4.7/4.8 regression] internal compiler error: in gfc_build_intrinsic_call, at fortran/expr.c:4647

2013-01-06 Thread tkoenig at gcc dot gnu.org


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



Thomas Koenig  changed:



   What|Removed |Added



 CC||tkoenig at gcc dot gnu.org



--- Comment #5 from Thomas Koenig  2013-01-06 
20:56:20 UTC ---

The problem is that gfc_get_sym_tree is asked to

get "size", but that is not available in the current

namespace.



The ICE goes away if "intrinsic:: size" is added.



We could simply remove the assert, but that would

be a bad idea in case the user specifies something

called "size" for something else.



So, we need to generate a different name, like in the

frontend optimization pass, where we use __internal_foo

for an intrinsic named foo.


[Bug fortran/55618] [4.6/4.7/4.8 Regression] Failures with ISO_Varying_String test suite

2013-01-06 Thread pault at gcc dot gnu.org


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



Paul Thomas  changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2013-01-06

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

   |gnu.org |

 Ever Confirmed|0   |1



--- Comment #5 from Paul Thomas  2013-01-06 21:12:31 
UTC ---

Created attachment 29091

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

Tentative patch for the PR



This appears to do the job.  It fixes all the iso_varying_string failures and

regtests.



I will have to develop a suitable testcase, check all the side wrinkles and

find out where the bug was introduced.  Should be able to submit tomorrow

night.



Paul


[Bug c/55890] New: calling a builtin func through a cast triggers an ICE

2013-01-06 Thread vapier at gentoo dot org

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

 Bug #: 55890
   Summary: calling a builtin func through a cast triggers an ICE
Classification: Unclassified
   Product: gcc
   Version: 4.7.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: vap...@gentoo.org
Target: x86_64-linux-gnu


$ cat test.i
extern void *memmove(void *, void *, long unsigned int);
typedef int (*_TEST_fun_) ();
static _TEST_fun_ i = (_TEST_fun_) memmove;
main() { i(); }

$ gcc-4.7.2 -O1 -c test.i
test.i: In function ‘main’:
test.i:4:1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.


[Bug fortran/55852] [4.6/4.7/4.8 regression] internal compiler error: in gfc_build_intrinsic_call, at fortran/expr.c:4647

2013-01-06 Thread tkoenig at gcc dot gnu.org


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



--- Comment #6 from Thomas Koenig  2013-01-06 
21:59:13 UTC ---

This patch works (not regression-tested yet), but the method

using the state variable seems hackish and error-prone.



What do you think?



Index: expr.c

===

--- expr.c  (Revision 194850)

+++ expr.c  (Arbeitskopie)

@@ -4623,7 +4623,8 @@

want to add arguments but with a NULL-expression.  */



 gfc_expr*

-gfc_build_intrinsic_call (const char* name, locus where, unsigned numarg, ...)

+gfc_build_intrinsic_call (const char* name, const char *symtree_name,

+ locus where, unsigned numarg, ...)

 {

   gfc_expr* result;

   gfc_actual_arglist* atail;

@@ -4641,11 +4642,17 @@

   result->value.function.name = name;

   result->value.function.isym = isym;



-  result->symtree = gfc_find_symtree (gfc_current_ns->sym_root, name);

-  gcc_assert (result->symtree

- && (result->symtree->n.sym->attr.flavor == FL_PROCEDURE

- || result->symtree->n.sym->attr.flavor == FL_UNKNOWN));

+  if (symtree_name == NULL)

+{

+  result->symtree = gfc_find_symtree (gfc_current_ns->sym_root, name);



+  gcc_assert (result->symtree &&

+ (result->symtree->n.sym->attr.flavor == FL_PROCEDURE

+  || result->symtree->n.sym->attr.flavor == FL_UNKNOWN));

+}

+  else

+gfc_get_sym_tree (symtree_name, gfc_current_ns, &result->symtree, true);

+

   va_start (ap, numarg);

   atail = NULL;

   for (i = 0; i < numarg; ++i)

Index: simplify.c

===

--- simplify.c  (Revision 194850)

+++ simplify.c  (Arbeitskopie)

@@ -33,6 +33,7 @@



 gfc_expr gfc_bad_expr;



+bool artificial_call = false;



 /* Note that 'simplification' is not just transforming expressions.

For functions that are not simplified at compile time, range

@@ -3248,7 +3249,10 @@

  gfc_expr* dim = result;

  mpz_set_si (dim->value.integer, d);



+ artificial_call = true;

  result = gfc_simplify_size (array, dim, kind);

+ artificial_call = false;

+

  gfc_free_expr (dim);

  if (!result)

goto returnNull;

@@ -5512,7 +5516,10 @@

{

  mpz_set_ui (e->value.integer, n + 1);



+ artificial_call = true;

  f = gfc_simplify_size (source, e, NULL);

+ artificial_call = false;

+

  gfc_free_expr (e);

  if (f == NULL)

{

@@ -5584,11 +5591,18 @@

   /* Otherwise, we build a new SIZE call.  This is hopefully at least

 simpler than the original one.  */

   if (!simplified)

-   simplified = gfc_build_intrinsic_call ("size", array->where, 3,

-  gfc_copy_expr (replacement),

-  gfc_copy_expr (dim),

-  gfc_copy_expr (kind));

+   {

+ const char *symtree_name;

+ if (artificial_call)

+   symtree_name = "__internal_size";

+ else

+   symtree_name = NULL;



+ simplified = gfc_build_intrinsic_call ("size", symtree_name,

array->where, 3,

+gfc_copy_expr (replacement),

+gfc_copy_expr (dim),

+gfc_copy_expr (kind));

+   }

   return simplified;

 }



Index: gfortran.h

===

--- gfortran.h  (Revision 194850)

+++ gfortran.h  (Arbeitskopie)

@@ -2797,7 +2797,8 @@

 bool gfc_has_ultimate_allocatable (gfc_expr *);

 bool gfc_has_ultimate_pointer (gfc_expr *);



-gfc_expr* gfc_build_intrinsic_call (const char*, locus, unsigned, ...);

+gfc_expr* gfc_build_intrinsic_call (const char*, const char *, locus,

+   unsigned, ...);

 gfc_try gfc_check_vardef_context (gfc_expr*, bool, bool, bool, const char*);


[Bug libstdc++/55872] Crash issue with RTLD_DEEPBIND usage with stdc++ library

2013-01-06 Thread gauryogesh.nsit at gmail dot com


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



--- Comment #3 from Yogesh Gaur  2013-01-07 
00:12:26 UTC ---

(In reply to comment #2)

> GCC 4.4 is no longer maintained or supported. 

> 

> Unles you can reproduce the problem with a current release of GCC (which I

> can't) then nothing is going to happen.

> 

Hello Jonathan,



I tried on GCC 4.6.4 also and still getting this issue on there, I didn't have

any more latest copy of GCC with me.



> N.B. compiling main.cpp with -fPIC seems to fix the problem anyway.



Can you please explain that why it should work with -fPIE, I am able to work it

using -fPIE while making my executable.

Please note that we should never use -fPIC with executable it will break

prelink, if Thread Local Storage is used.


[Bug libstdc++/55728] std::bad_function_call has misleading what() result

2013-01-06 Thread redi at gcc dot gnu.org


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



--- Comment #7 from Jonathan Wakely  2013-01-07 
00:50:25 UTC ---

Author: redi

Date: Mon Jan  7 00:50:16 2013

New Revision: 194958



URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194958

Log:

PR libstdc++/55847

* src/c++11/shared_ptr.cc (bad_weak_ptr::what()): Correct string.

* testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc: Verify

string.



PR libstdc++/55728

* include/std/functional (bad_function_call::what()): Declare.

* src/c++11/functional.cc (bad_function_call::what()): Define.

* config/abi/pre/gnu.ver (bad_function_call::what()): Export.

* testsuite/20_util/bad_function_call/what.cc: New.



Added:

trunk/libstdc++-v3/testsuite/20_util/bad_function_call/what.cc

  - copied, changed from r194957,

trunk/libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc

Modified:

trunk/libstdc++-v3/ChangeLog

trunk/libstdc++-v3/config/abi/pre/gnu.ver

trunk/libstdc++-v3/include/std/functional

trunk/libstdc++-v3/src/c++11/functional.cc

trunk/libstdc++-v3/src/c++11/shared_ptr.cc

trunk/libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc


[Bug libstdc++/55847] mistake bad_weak_ptr::what() message

2013-01-06 Thread redi at gcc dot gnu.org


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



--- Comment #1 from Jonathan Wakely  2013-01-07 
00:50:23 UTC ---

Author: redi

Date: Mon Jan  7 00:50:16 2013

New Revision: 194958



URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194958

Log:

PR libstdc++/55847

* src/c++11/shared_ptr.cc (bad_weak_ptr::what()): Correct string.

* testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc: Verify

string.



PR libstdc++/55728

* include/std/functional (bad_function_call::what()): Declare.

* src/c++11/functional.cc (bad_function_call::what()): Define.

* config/abi/pre/gnu.ver (bad_function_call::what()): Export.

* testsuite/20_util/bad_function_call/what.cc: New.



Added:

trunk/libstdc++-v3/testsuite/20_util/bad_function_call/what.cc

  - copied, changed from r194957,

trunk/libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc

Modified:

trunk/libstdc++-v3/ChangeLog

trunk/libstdc++-v3/config/abi/pre/gnu.ver

trunk/libstdc++-v3/include/std/functional

trunk/libstdc++-v3/src/c++11/functional.cc

trunk/libstdc++-v3/src/c++11/shared_ptr.cc

trunk/libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc


[Bug libstdc++/55728] std::bad_function_call has misleading what() result

2013-01-06 Thread redi at gcc dot gnu.org


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



Jonathan Wakely  changed:



   What|Removed |Added



 Status|ASSIGNED|RESOLVED

 Resolution||FIXED

   Target Milestone|--- |4.8.0



--- Comment #8 from Jonathan Wakely  2013-01-07 
00:53:26 UTC ---

fixed for 4.8


[Bug libstdc++/55847] mistake bad_weak_ptr::what() message

2013-01-06 Thread redi at gcc dot gnu.org


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



Jonathan Wakely  changed:



   What|Removed |Added



 Status|ASSIGNED|RESOLVED

 Resolution||FIXED



--- Comment #2 from Jonathan Wakely  2013-01-07 
00:53:33 UTC ---

fixed for 4.8


[Bug fortran/55891] New: Problem with shared library and EQUIVALENCE on darwin 11.4.2 x86_64

2013-01-06 Thread brtnfld at hdfgroup dot org


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



 Bug #: 55891

   Summary: Problem with shared library and EQUIVALENCE on darwin

11.4.2 x86_64

Classification: Unclassified

   Product: gcc

   Version: 4.6.2

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: fortran

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

ReportedBy: brtn...@hdfgroup.org





On a x86_64 system with Darwin Kernel Version 11.4.2, and if you use to compile

the programs:



gfortran -shared -fPIC  mod.f90 -o lib.so

gfortran -fPIC main.f90 lib.so



The main program does not receive the values from the module (i.e. the print

statement will print 0,0). It works if you use a static library.



main.f90:



PROGRAM main

  USE LIB2

  IMPLICIT NONE

  CALL f()

  PRINT*,i,j

END PROGRAM main



mod.f90:



MODULE LIB2

  INTEGER i

  INTEGER :: j

  EQUIVALENCE (j, i)

CONTAINS

  SUBROUTINE f()

IMPLICIT NONE

j = 40

  END SUBROUTINE f

END MODULE LIB2



nm lib.so

0f9a T ___lib2_MOD_f

0f94 t __dyld_func_lookup

1010 S _lib2.eq.0_

 U dyld_stub_binder

0f80 t dyld_stub_binding_helper


[Bug c++/53900] [regression] Too optimistic on a alignment assert

2013-01-06 Thread pinskia at gcc dot gnu.org


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



--- Comment #6 from Andrew Pinski  2013-01-07 
04:25:38 UTC ---

>  __attribute__((aligned(16))) float array[4];



Explicitly says the array is aligned to 16 bytes which means it is undefined by

the C/C++ standard what happens if you a pointer to the struct which contains

this array.  As this pointer will always be aligned by definition of the struct

(and any other use of it is undefined), then by definition

std::ptrdiff_t(array) will always have the lower 8bits be zero.


[Bug c/55892] New: Bogus compiler warning

2013-01-06 Thread sworddragon2 at aol dot com


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



 Bug #: 55892

   Summary: Bogus compiler warning

Classification: Unclassified

   Product: gcc

   Version: 4.7.2

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c

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

ReportedBy: sworddrag...@aol.com





Created attachment 29092

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

Example code



In the attachments is the example file for this bug report. Compiling it with

"gcc -O3 -Wall -Wextra -o /dev/null -pedantic test.c" will result in a warning:



In file included from /usr/include/stdio.h:937:0,

 from test.c:2:

In function 'fgets',

inlined from 'main' at test.c:17:11:

/usr/include/x86_64-linux-gnu/bits/stdio2.h:261:2: warning: call to

'__fgets_chk_warn' declared with attribute warning: fgets called with bigger

size than length of destination buffer [enabled by default]





There are 2 potential errors on this behavior:



- If the warning triggers on line 33 it should also be triggered on all 4

lines.

- In this code the limit of fgets can never exceed a length of 8. The compiler

thinks because read_limit can be 2147483647 (INT32_MAX) limit in fgets can it

be too (which as already said can never happen in this code). Removing the 3

lines which assign INT32_MAX removes the compiler warning.





I have a suggestion for a solution:



- Like conditional return values the compiler could check if the code has a

fixed construct which makes it possible to calculate if the limit will be

exceeded (this would match on the example code and trigger no compiler

warnings). If the code has a dynamic construct which makes it not possible to

calculate if the limit would be exceeded a comiler warning is thrown.


[Bug c++/55893] New: C++11: runtime segfault with static const object with virtual destructor

2013-01-06 Thread f.heckenb...@fh-soft.de


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



 Bug #: 55893

   Summary: C++11: runtime segfault with static const object with

virtual destructor

Classification: Unclassified

   Product: gcc

   Version: 4.7.2

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c++

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

ReportedBy: f.heckenb...@fh-soft.de





Created attachment 29093

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

Test case


[Bug c++/55893] C++11: runtime segfault with static const object with virtual destructor

2013-01-06 Thread f.heckenb...@fh-soft.de


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



--- Comment #1 from Frank Heckenbach  2013-01-07 
07:21:01 UTC ---

Submitted to early. Here's the description:



The attached test case segfault at runtime:



% g++-4.7 -std=c++11 bug.cpp && ./a.out 

Segmentation fault



As far as I can see, that's because tmp is allocated in read-only storage, but

the destructor tries to write to it to update the vtable pointer.



It only happens in C++11 mode.


[Bug c/55892] Bogus compiler warning

2013-01-06 Thread pinskia at gcc dot gnu.org

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

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID

--- Comment #1 from Andrew Pinski  2013-01-07 
07:34:25 UTC ---
First off you also need -D_FORTIFY_SOURCE and a newish glibc headers.  Second I
think this warning is correct.
Take a line which is 16 characters long.
The first time at beginning of the loop, limit: 8; readlimit: 8.

The next time, limit:0 readlimit: 0.
The next time limit: (unsigned long)(-8) readlimit: INT32_MAX
Warn because readlimit > 1024.

The reason why the first call to fgetsl does not warn is because it does not
get inlined as it is not hot.
The second is also the same reason as the first but also the code for fgets
cannot figure out the size of the variable, buffer.
The last has the same issue as second minus the inline issue.

The trunk gives a very good warning message of the point of the inline function
happens too:
In file included from /usr/include/stdio.h:910:0,
 from t67.c:2:
In function ‘fgets’,
inlined from ‘fgetsl.constprop.0’ at t67.c:17:11,
inlined from ‘main’ at t67.c:33:14:
/usr/include/bits/stdio2.h:253:2: warning: call to ‘__fgets_chk_warn’ declared
with attribute warning: fgets called with bigger size than length of
destination buffer [enabled by default]
  return __fgets_chk_warn (__s, __bos (__s), __n, __stream);
  ^


[Bug c++/55893] C++11: runtime segfault with static const object with virtual destructor

2013-01-06 Thread pinskia at gcc dot gnu.org


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



Andrew Pinski  changed:



   What|Removed |Added



   Keywords||wrong-code

 Status|UNCONFIRMED |NEW

   Last reconfirmed||2013-01-07

 Ever Confirmed|0   |1



--- Comment #2 from Andrew Pinski  2013-01-07 
07:40:21 UTC ---

Confirmed, also fails on the trunk.

.section.rodata

.align 8

.type_ZZ4mainE3tmp, @object

.size_ZZ4mainE3tmp, 8

_ZZ4mainE3tmp:

.quad_ZTV3foo+16

.weak_ZTI3foo