[Bug c/57862] invalid read struct uint32_t member (ARMV5)

2013-07-10 Thread mendola at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57862

--- Comment #4 from Gaetano Mendola  ---
At this point I'm very puzzled. The fact I have to use memcpy instead of an
assignment for sake of portability is plain wrong.

Consider that only looking at:

  struct in_addr myInAddr;
  myInAddr.s_addr = theIpHeader->daddr;

I have no idea if the theIpHeader pointer was the result of a malloc or the
result of an assignment with a not aligned offset. Unless of course I inspect
the pointer value. 

The entire application (my application) suppose, as I think it should, that an
assignment of a value retrieved from a structure member is correctly done, note
that I'm not relying if this is done with 1 bus access, 2 or whatever. 

I'm going to put 2 in /proc/cpu/alignment and considering it as a kernel
configuration problem. 

btw clang behaves correctly even with a "kernel not well configured".


[Bug target/57841] Assembler error on gcc for ARM

2013-07-10 Thread rearnsha at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57841

Richard Earnshaw  changed:

   What|Removed |Added

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

--- Comment #3 from Richard Earnshaw  ---
Your version of GAS/binutils is too old.  It had a bug in the handling of
alignment specifiers.  This is not a GCC bug anyway.


[Bug target/57865] Broken _save64gpr and _rest64gpr usage

2013-07-10 Thread sebastian.hu...@embedded-brains.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57865

Sebastian Huber  changed:

   What|Removed |Added

 CC||amodra at gmail dot com
  Known to work||4.8.0

--- Comment #1 from Sebastian Huber  ---
I performed a git bisect.  This problem was introduced with this commit:

cef20746448f8897180eed3a49a3f8c68b0147f2 is the first bad commit
commit cef20746448f8897180eed3a49a3f8c68b0147f2
Author: amodra 
Date:   Wed Apr 25 02:32:56 2012 +

gcc/
* config/rs6000/rs6000 (SAVE_INLINE_VRS, REST_INLINE_VRS,
V_SAVE_INLINE, SAVRES_LR, SAVRES_SAVE, SAVRES_REG,
SAVRES_GPR, SAVRES_FPR, SAVRES_VR): Define.
(no_global_regs_above): Delete.
(no_global_regs): New function.
(rs6000_savres_strategy): Handle vector regs.  Use proper lr_save_p
value for load multiple test.
(savres_routine_syms): Increase size.
(rs6000_savres_routine_name, rs6000_savres_routine_sym,
ptr_regno_for_savres, rs6000_emit_savres_rtx): Pass in int selector
rather than a number of boolean flags.  Update all callers.
(rs6000_savres_routine_name): Generate vector save/restore names.
(rs6000_savres_routine_sym): Handle vector regs.  Delete forward decl.
(ptr_regno_for_savres, rs6000_emit_savres_rtx): Likewise.
(rs6000_emit_prologue): Delete saving_FPRs_inline, saving_GPRs_inline
and using_store_multiple.  Expand uses.  Don't always use r11 as
frame reg when needed for out-of-line saves.  Set up initial offset
for out-of-line vector saves when buying stack frame.  Handle pointer
reg setup for out-of-line fp save.  Emit call to out-of-line vector
save function.  Choose r11 or r12 for vrsave reg when available for
better scheduling.
(rs6000_output_function_prologue): Don't emit .extern for ELF.
(rs6000_emit_epilogue): Choose a better frame reg when restoring
from back-chain to suit out-of-line vector restore functions.  Emit
call to out-of-line vector restore function.  Adjust register used
for cr restore.  Tweak pointer register setup for gpr restore.
* config/rs6000/rs6000.h (FIRST_SAVED_GP_REGNO): Take into account
FIXED_R13.
* config/rs6000/sysv4.h (FP_SAVE_INLINE, GP_SAVE_INLINE): Simplify.
(V_SAVE_INLINE): Define.
* config/rs6000/altivec.md (save_vregs_*, restore_vregs_*): New insns.
libgcc/
* config/rs6000/crtsavevr.S: New file.
* config/rs6000/crtrestvr.S: New file.
* config/rs6000/t-savresfgpr: Build the above.
* config/rs6000/t-netbsd: Likewise.



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

:04 04 f8dd5a05848aed385c5d1a8ec6d6a6979ea3777c
c644e474189368b21c2c950e54c75ad2cada389c M  gcc
:04 04 4b65af83bd972aa70908f8d3f5efad7b22ac2ce2
51b8b2f6236f0261d920ff6b5823cfdb17d8871e M  libgcc


[Bug tree-optimization/57858] AVX2: ymm used for div, not for sqrt

2013-07-10 Thread vincenzo.innocente at cern dot ch
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57858

--- Comment #5 from vincenzo Innocente  ---
I remember something similar in the past
--param max-completely-peel-times=1 
sort of fix it…  (why pre does not recognize that 1/(1+0) == 1  btw??

of course it is just a benchmark (and I can modify it to avoid the loop
peeling),
still

[Bug target/45208] powerpc-gcc -msdata breakdown on incomplete initializers

2013-07-10 Thread sebastian.hu...@embedded-brains.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45208

Sebastian Huber  changed:

   What|Removed |Added

 CC||sebastian.huber@embedded-br
   ||ains.de

--- Comment #1 from Sebastian Huber  ---
I can no longer reproduce this problem with GCC 4.7 and 4.8.


[Bug c/57862] invalid read struct uint32_t member (ARMV5)

2013-07-10 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57862

--- Comment #5 from Mikael Pettersson  ---
Your test case contains this:

===snip===
struct iphdr
  {
...
  };
...
int main()
{
  char thePacket[1518];
  memset(thePacket, 0, 1518);

  thePacket[30] = 1;
  thePacket[31] = 2;
  thePacket[32] = 3;
  thePacket[33] = 4;

  struct ether_header* theEthHeader = (struct ether_header*)(thePacket);

  struct iphdr* theIpHeader = (struct iphdr*)((const unsigned
char*)(theEthHeader) + 14);

  struct in_addr myInAddr;
  myInAddr.s_addr = theIpHeader->daddr;
===snip===

The alignment of thePacket is arbitrary, so the alignment of theIpHeader is
unknown, and struct iphdr is not declared with attribute packed.  The final
load may therefore be misaligned.


[Bug c/57862] invalid read struct uint32_t member (ARMV5)

2013-07-10 Thread mendola at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57862

--- Comment #6 from Gaetano Mendola  ---
That's clear to me.

I'm writing in C not in assembler, what I'm trying to understand is if I have
to
threat the following code:

  struct in_addr myInAddr;
  myInAddr.s_addr = theIpHeader->daddr;

as not portable, where myInAddr.s_addr and theIpHeader->daddr are of the same
type. I'm not a c-standard lawyer but I'm hard believing that in the standard
that assignment is marked as: "undefined behaviour" unless you use memcpy.

And again printf-ing the two values, both are reported on screen as the same
number but the bytes behind that area of memory do not contain the same values.


[Bug target/47540] ARM THUMB crash with complex numbers

2013-07-10 Thread sebastian.hu...@embedded-brains.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47540

Sebastian Huber  changed:

   What|Removed |Added

 CC||sebastian.huber@embedded-br
   ||ains.de

--- Comment #9 from Sebastian Huber  ---
I cannot reproduce this problem with GCC 4.6.4 and 4.8.1.


[Bug target/57865] Broken _save64gpr and _rest64gpr usage

2013-07-10 Thread amodra at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57865

Alan Modra  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2013-07-10
   Assignee|unassigned at gcc dot gnu.org  |amodra at gmail dot com
 Ever confirmed|0   |1

--- Comment #2 from Alan Modra  ---
My guess is that it's this change

-#define FIRST_SAVED_GP_REGNO 13
+#define FIRST_SAVED_GP_REGNO  (FIXED_R13 ? 14 : 13)

messing with ool_adjust.


[Bug c/57862] invalid read struct uint32_t member (ARMV5)

2013-07-10 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57862

--- Comment #7 from Mikael Pettersson  ---
(In reply to Gaetano Mendola from comment #6)
>   struct in_addr myInAddr;
>   myInAddr.s_addr = theIpHeader->daddr;
> 
> as not portable, where myInAddr.s_addr and theIpHeader->daddr are of the
> same type. I'm not a c-standard lawyer but I'm hard believing that in the
> standard
> that assignment is marked as: "undefined behaviour" unless you use memcpy.

The assignment is immaterial, it's the load (theIpHeader->daddr) that's
problematic because the base pointer (theIpHeader) is not correctly aligned for
its declared type (struct iphdr).


[Bug driver/42485] [4.4/4.5/4.6 Regression] -V switch broken

2013-07-10 Thread matz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42485

Michael Matz  changed:

   What|Removed |Added

 CC||matz at gcc dot gnu.org
  Known to fail||

--- Comment #9 from Michael Matz  ---
Heh.  I just had an actual user who wanted to make use of -V; because in the
build system he was working in, the compiler name 'gcc' was hardcoded
everywhere, but he could add options via environment variables, so
'gcc-VERSION'
was no option, but '-V VERSION' would have been possible, except of course,
that it isn't anymore ;-)

Well, too bad, I guess.


[Bug target/57865] Broken _save64gpr and _rest64gpr usage

2013-07-10 Thread sebastian.hu...@embedded-brains.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57865

--- Comment #3 from Sebastian Huber  ---
(In reply to Alan Modra from comment #2)
> My guess is that it's this change
> 
> -#define FIRST_SAVED_GP_REGNO 13
> +#define FIRST_SAVED_GP_REGNO   (FIXED_R13 ? 14 : 13)
> 
> messing with ool_adjust.

I used this on the current 4.8 head:

diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 8a36084..d075915 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -952,7 +952,7 @@ extern unsigned rs6000_pointer_size;

 #define FIRST_SAVED_ALTIVEC_REGNO (FIRST_ALTIVEC_REGNO+20)
 #define FIRST_SAVED_FP_REGNO (14+32)
-#define FIRST_SAVED_GP_REGNO (FIXED_R13 ? 14 : 13)
+#define FIRST_SAVED_GP_REGNO 13

 /* List the order in which to allocate registers.  Each register must be
listed once, even those in FIXED_REGISTERS.

This solves the problem above.  I don't know the other impact of the change.

[Bug target/57865] Broken _save64gpr and _rest64gpr usage

2013-07-10 Thread amodra at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57865

--- Comment #4 from Alan Modra  ---
Created attachment 30489
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30489&action=edit
Fix ool_adjust

Please verify that this fixes the problem


[Bug target/57484] 'std::numeric_limits< T >::signaling_NaN()' signaling-bit is incorrect for x86 32-bit.

2013-07-10 Thread zxClhzAApX1EdJwQANqrjLERmFeURQVy at cynd dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57484

--- Comment #19 from Charles L. Wilcox  ---
(In reply to Uroš Bizjak from comment #11)
> On an x86 target using the legacy x87 instructions and the 80-bit registers,
> a load of a 64-bit or 32-bit value in memory into the 80-bit registers
> counts as a format conversion and an signaling NaN input will turn into a
> quiet NaN in the register format.

Does this mean if a 80-bit sNaN was generated and loaded into a register it was
still have the signaling bit set correctly?  And if so, could this value then
be down-converted to a 32 or 64-bit float?  In C++:
float float32_snan const
  = static_cast< float >( std::numeric_limits< long double
>::signaling_NaN() );
double float64_snan const
  = static_cast< double >( std::numeric_limits< long double
>::signaling_NaN() );
Or, is the "cast" here a format conversion, causing the signaling NaN to
convert to a quiet NAN?

[Bug target/57865] Broken _save64gpr and _rest64gpr usage

2013-07-10 Thread sebastian.hu...@embedded-brains.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57865

--- Comment #5 from Sebastian Huber  ---
(In reply to Alan Modra from comment #4)
> Created attachment 30489 [details]
> Fix ool_adjust
> 
> Please verify that this fixes the problem

Yes, your patch fixes also the problem if applied to the 4.8 head.

Thanks a lot for the quick response.


[Bug target/57484] 'std::numeric_limits< T >::signaling_NaN()' signaling-bit is incorrect for x86 32-bit.

2013-07-10 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57484

--- Comment #20 from Uroš Bizjak  ---
(In reply to Charles L. Wilcox from comment #19)
> (In reply to Uroš Bizjak from comment #11)
> > On an x86 target using the legacy x87 instructions and the 80-bit registers,
> > a load of a 64-bit or 32-bit value in memory into the 80-bit registers
> > counts as a format conversion and an signaling NaN input will turn into a
> > quiet NaN in the register format.
> 
> Does this mean if a 80-bit sNaN was generated and loaded into a register it
> was still have the signaling bit set correctly?  And if so, could this value

80-bit load is not considered as a format conversion, so signalling bit will be
set correctly.

> then be down-converted to a 32 or 64-bit float?  In C++:
> float float32_snan const
>   = static_cast< float >( std::numeric_limits< long double
> >::signaling_NaN() );
> double float64_snan const
>   = static_cast< double >( std::numeric_limits< long double
> >::signaling_NaN() );
> Or, is the "cast" here a format conversion, causing the signaling NaN to
> convert to a quiet NAN?

I don't know the c++ details, but compiler can spill the value out from the
register stack using 32- or 64-bit float moves. In any case, signalling bit in
x87 is unreliable and should not be used.

[Bug driver/42485] [4.4/4.5/4.6 Regression] -V switch broken

2013-07-10 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42485

--- Comment #10 from Manuel López-Ibáñez  ---
(In reply to Michael Matz from comment #9)that it isn't anymore ;-)
> 
> Well, too bad, I guess.

I am not sure of the exact details but unless the path itself is hard-coded,
you could always put a fake gcc, to be found in the path before the real gcc, 
that parses -V VERSION and calls the correct gcc. It should be a few lines of
shell (or another scripting language). Another alternative is to make gcc a
symlink to the actual gcc-VERSION. Yet another may be shell aliases, but I am
not sure if that works for Makefiles.

The -V switch was not working so it wouldn't have helped your user anyway.

[Bug tree-optimization/57861] wrong code at -O3 on x86_64-linux-gnu in 32-bit mode

2013-07-10 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57861

Mikael Pettersson  changed:

   What|Removed |Added

 CC||vmakarov at gcc dot gnu.org

--- Comment #1 from Mikael Pettersson  ---
It's a recent regression, caused by the LRA change in r200723.  Author CCd.


[Bug libitm/56801] Internal Compiler Error when compiling relaxed transaction

2013-07-10 Thread patrick.marlier at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56801

--- Comment #4 from Patrick Marlier  ---
Created attachment 30490
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30490&action=edit
reduced testcase.

I am now able to reproduce the ICE even with FSF 4.7.3 (it was due to different
included headers).
Attached the preprocessed testcase.

$ gcc-4.7 -O1 -fgnu-tm -pthread -S -Wall -Wfatal-errors testcase2.i
testcase2.i: In function ‘foo’:
testcase2.i:5:6: internal compiler error: in expand_call_tm, at
trans-mem.c:2280

[Bug tree-optimization/57861] wrong code at -O3 on x86_64-linux-gnu in 32-bit mode

2013-07-10 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57861

Dominique d'Humieres  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2013-07-10
 Ever confirmed|0   |1

--- Comment #2 from Dominique d'Humieres  ---
This revision also causes

FAIL: gcc.c-torture/execute/arith-rand-ll.c execution,  -Og -g 
FAIL: gfortran.dg/pointer_remapping_5.f08  -Os  execution test
FAIL: libgomp.fortran/vla3.f90  -Os  execution test

on x86_64-apple-darwin10 with -m32 and

FAIL: gcc.c-torture/execute/arith-rand-ll.c execution,  -O2 
FAIL: gcc.c-torture/execute/arith-rand-ll.c execution,  -O2 -flto
-fno-use-linker-plugin -flto-partition=none 
FAIL: gcc.c-torture/execute/arith-rand-ll.c execution,  -O2 -flto
-fuse-linker-plugin -fno-fat-lto-objects 
FAIL: gcc.c-torture/execute/arith-rand-ll.c execution,  -O3
-fomit-frame-pointer 
FAIL: gcc.c-torture/execute/arith-rand-ll.c execution,  -O3
-fomit-frame-pointer -funroll-all-loops -finline-functions 
FAIL: gcc.c-torture/execute/arith-rand-ll.c execution,  -O3
-fomit-frame-pointer -funroll-loops 
FAIL: gcc.c-torture/execute/arith-rand-ll.c execution,  -O3 -g 
FAIL: gfortran.fortran-torture/execute/where_7.f90 execution,  -Os 
FAIL: libgomp.fortran/vla3.f90  -Os  execution test

on x86_64-unknown-linux-gnu with -m32.


[Bug tree-optimization/57860] wrong code for bitwise ops with long long literal on x86_64-linux (32-bit mode)

2013-07-10 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57860

Mikael Pettersson  changed:

   What|Removed |Added

 CC||vmakarov at gcc dot gnu.org

--- Comment #1 from Mikael Pettersson  ---
Caused by the LRA changes in r200723.  Author CCd.


[Bug fortran/57871] gfortran -freal-4-real-16 gives wrong result for selected_real_kind(1)

2013-07-10 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57871

Dominique d'Humieres  changed:

   What|Removed |Added

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

--- Comment #1 from Dominique d'Humieres  ---
> gfortran 4.8.1 -freal-4-real-16 gives real(16) kind with 
> selected_real_kind(1) but it ought to give real(8) because that is 
> the smallest decimal precision available with that compiler option. 
> Same problem with -freal-4-real-10 giving real(10) instead of real(8). ...

Why are you expecting that? The manual says:

-freal-4-real-8
-freal-4-real-10
-freal-8-real-4
-freal-8-real-10
-freal-8-real-16
Promote all REAL(KIND=M) entities to REAL(KIND=N) entities. If REAL(KIND=N) is
unavailable, then an error will be issued. All other real kind types are
unaffected by this option. These options should be used with care and may not
be suitable for your codes. Areas of possible concern include calls to external
procedures, alignment in EQUIVALENCE and/or COMMON, generic interfaces, BOZ
literal constant conversion, and I/O. Inspection of the intermediate
representation of the translated Fortran code, produced by
-fdump-tree-original, is suggested. 

and your example does exactly that: Closing as INVALID.


[Bug target/56771] Integer Overflow? Building arm-rtems libgcc2

2013-07-10 Thread joel at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56771

Joel Sherrill  changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution|--- |FIXED

--- Comment #12 from Joel Sherrill  ---
Fixed per email from Sebastian Huber. Closing.


[Bug middle-end/57859] -ftrapv does not trap on signed overflows for struct fields (32-bit mode)

2013-07-10 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57859

--- Comment #1 from Mikael Pettersson  ---
With -m64: both test cases work with gcc-3.2.3, and fail with every release
from 3.3.6 up to current trunk.

With -m32: the first test case doesn't trap with any release since 3.2.3, the
second test case traps with current trunk and 4.8, but not with any release
from 3.2.3 to 4.7.3.


[Bug target/56987] gcc/config/avr/avr.opt:80: "change" -> "changed"?

2013-07-10 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56987

Georg-Johann Lay  changed:

   What|Removed |Added

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

--- Comment #1 from Georg-Johann Lay  ---
Fixed in r200869 (trunk), r200868 (4.8.2)


[Bug target/57506] [avr] Some devices are present twice in avr-mcus.def

2013-07-10 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57506

Georg-Johann Lay  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #2 from Georg-Johann Lay  ---
Fixed by 200870 (trunk), 200871 (4.8.2).


[Bug target/57506] [avr] Some devices are present twice in avr-mcus.def

2013-07-10 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57506

--- Comment #3 from Georg-Johann Lay  ---
Fixed by r200870 (trunk), r200871 (4.8.2).


[Bug target/57844] ICE: unrecognizable addqi3 insn with -msp8 and frame size of 128 bytes

2013-07-10 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57844

Georg-Johann Lay  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
  Known to work||4.7.4
 Resolution|--- |FIXED
  Known to fail|4.7.2   |4.7.3

--- Comment #2 from Georg-Johann Lay  ---
Fixed by r200872 (trunk), r200873 (4.8.2), r200874 (4.7.4).


[Bug c/57873] New: [avr-gcc] Local variable on stack overwritten by call instruction on target AVR

2013-07-10 Thread schlimmchen at yahoo dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57873

Bug ID: 57873
   Summary: [avr-gcc] Local variable on stack overwritten by call
instruction on target AVR
   Product: gcc
   Version: 4.8.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: schlimmchen at yahoo dot de

Created attachment 30491
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30491&action=edit
Sample code to reproduce the bug

Have a look at this (real) non-working code snippet:

  1 char helper ( char *param )
  2 {
  3   return param[0];
  4 }
  5
  6 int main () {
  7   char localNonStaticVar = 0x80;
  8
  9   helper ( &localNonStaticVar );
 10
 11   while ( 1 ) { }
 12
 13   return 0;
 14 }

The function "helper" will return the low or high byte (I don't really know
which) of the return address in the call of "helper" in "main". Have a look at
how "main" is compiled to assembler:

avr-gcc -Wall -Wextra -S -mmcu=atmega1284p -O0 main.c -o main.s

 35 .type   main, @function
 36 main:
 37 push r28
 38 push r29
 39 push __zero_reg__
 40 in r28,__SP_L__
 41 in r29,__SP_H__
 42 /* prologue: function */
 43 /* frame size = 1 */
 44 /* stack size = 3 */
 45 .L__stack_usage = 3
 46 ldi r24,lo8(-128)
 47 std Y+1,r24
 48 movw r24,r28
 49 adiw r24,1
 50 call helper
 51 .L4:
 52 rjmp .L4
 53 .size   main, .-main

Three registers are pushed onto the stack. Then r28,r29 (special register Y)
are assigned the stack pointer address. The value 0x80 is loaded into r24, then
stored on top of the stack BUT the stack pointer is NOT changed. In preparation
for the call of "helper", the address of this local variable is placed into r24
and r25.

Now, the instruction "call" places two bytes (the function return address) on
top of the stack, but the stack pointer still points to "__zero_reg__" and the
local variable on the stack is overwritten.

I guess my explanation is understandable?!

See the attached documents for more.


[Bug c/57873] [avr-gcc] Local variable on stack overwritten by call instruction on target AVR

2013-07-10 Thread schlimmchen at yahoo dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57873

--- Comment #1 from Bernhard  ---
Created attachment 30492
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30492&action=edit
Compiled assembly code


[Bug c++/57874] New: No SFINAE on ADL lookup failure

2013-07-10 Thread gpderetta at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57874

Bug ID: 57874
   Summary: No SFINAE on ADL lookup failure
   Product: gcc
   Version: 4.7.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gpderetta at gmail dot com

It seems that at least GCC 4.7 fails with an hard error on failure to lookup a
function via ADL in a sfinae context, if a function of that name is not visible
in scope. The following test fails to compile unless WORKAROUND is defined:

#ifdef WORKAROUND
struct unusable{};
void foo(unusable);
#endif

namespace NX
{
struct X {};
void foo(X){}
}

namespace NY
{
struct Y {};
}


template
auto ADLfoo(T&&x)  -> decltype((foo(T{}), short())); //decltype(foo(x));


char ADLfoo(...);

static_assert(sizeof(ADLfoo(NY::Y{})) == 1, "");
static_assert(sizeof(ADLfoo(NX::X{})) == 2, "");

int main(){}

# g++ --std=c++11 -C adl.cc
adl.cc: In substitution of ‘template decltype ((foo(T{}), short
int())) ADLfoo(T&&) [with T = NY::Y]’:
adl.cc:24:36:   required from here
adl.cc:19:6: error: ‘foo’ was not declared in this scope
adl.cc:19:6: note: suggested alternative:
adl.cc:9:6: note:   ‘NX::foo’

Clang 3.2 compiles this fine.

[Bug c++/57869] [C++11] Casting a object pointer to a function pointer should not warn about a forbidden conversion

2013-07-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57869

Paolo Carlini  changed:

   What|Removed |Added

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

--- Comment #2 from Paolo Carlini  ---
Fixed for 4.9.0.


[Bug c++/57874] No SFINAE on ADL lookup failure

2013-07-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57874

Paolo Carlini  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
  Known to work||4.8.0, 4.9.0
 Resolution|--- |FIXED
  Known to fail||4.7.3

--- Comment #1 from Paolo Carlini  ---
Works fine in 4_8-branch and mainline. To be safe I'm adding the testcase.


[Bug fortran/57871] gfortran -freal-4-real-16 gives wrong result for selected_real_kind(1)

2013-07-10 Thread kargl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57871

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
   Last reconfirmed||2013-07-10
 CC||kargl at gcc dot gnu.org
 Resolution|INVALID |---
 Ever confirmed|0   |1

--- Comment #2 from kargl at gcc dot gnu.org ---
(In reply to Dominique d'Humieres from comment #1)
> > gfortran 4.8.1 -freal-4-real-16 gives real(16) kind with 
> > selected_real_kind(1) but it ought to give real(8) because that is 
> > the smallest decimal precision available with that compiler option. 
> 
> and your example does exactly that: Closing as INVALID.

I think that you may have been a little too hasty in closing
this PR.  The issue lies in the code for selected_real_kind.

  implicit none
  integer,parameter:: p1 = selected_real_kind(1)

This initialization expression is requesting the type with
smallest precision that exceeds 1.  With -freal-4-real-16,
that type is double precision (ie kind=8).  The problem
lies in gfc_simplify_selected_real_kind.  It has no knowledge
of the -freal-*-real-* options.  The loop (lines 5447-5457)

  for (i = 0; gfc_real_kinds[i].kind != 0; i++)
{
  if (gfc_real_kinds[i].precision >= precision)
found_precision = 1;

  if (gfc_real_kinds[i].range >= range)
found_range = 1;

  if (gfc_real_kinds[i].radix >= radix)
found_radix = 1;

  if (gfc_real_kinds[i].precision >= precision
  && gfc_real_kinds[i].range >= range
  && gfc_real_kinds[i].radix >= radix && gfc_real_kinds[i].kind < kind)
kind = gfc_real_kinds[i].kind;
}

searchs the ordered set [24, 53, 53, 113] (on FreeBSD-i386) or
[24, 53, 64, 113] (on FreeBSD-amd64).  In either case, the
initialization expression returns REAL(4).  However, with
-freal-4-real-16,  one might expect the ordered set to be
searched is [113, 53, 64, 113] as REAL(4) has been promoted
to REAL(16).


[Bug preprocessor/57757] CPP extra inserted whitespace needs to be reviewed for C++11 user-defined literals

2013-07-10 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57757

Jakub Jelinek  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #5 from Jakub Jelinek  ---
Author: jakub
Date: Wed Jul 10 16:40:49 2013
New Revision: 200875

URL: http://gcc.gnu.org/viewcvs?rev=200875&root=gcc&view=rev
Log:
PR preprocessor/57757
* lex.c (cpp_avoid_paste): Avoid pasting CPP_{,W,UTF8}STRING
or CPP_STRING{16,32} with CPP_NAME or SPELL_LITERAL token that
starts if a-zA-Z_.

* g++.dg/cpp/paste1.C: New test.
* g++.dg/cpp/paste2.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/cpp/paste1.C
trunk/gcc/testsuite/g++.dg/cpp/paste2.C
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/libcpp/ChangeLog
trunk/libcpp/lex.c

Fixed for 4.9+.


[Bug preprocessor/57824] Raw string literals not handled correctly in macro arguments or deferred pragmas

2013-07-10 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57824

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #2 from Jakub Jelinek  ---
Author: jakub
Date: Wed Jul 10 16:52:19 2013
New Revision: 200879

URL: http://gcc.gnu.org/viewcvs?rev=200879&root=gcc&view=rev
Log:
PR preprocessor/57824
* lex.c (lex_raw_string): Allow reading new-lines if
in_deferred_pragma or if parsing_args and there is still
data in the current buffer.

* c-c++-common/raw-string-17.c: New test.
* c-c++-common/gomp/pr57824.c: New test.

Added:
trunk/gcc/testsuite/c-c++-common/gomp/pr57824.c
trunk/gcc/testsuite/c-c++-common/raw-string-17.c
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/libcpp/ChangeLog
trunk/libcpp/lex.c

Fixed for 4.9+.


[Bug tree-optimization/57875] New: wrong code at -O2 on x86_64-linux-gnu in 32-bit mode

2013-07-10 Thread su at cs dot ucdavis.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57875

Bug ID: 57875
   Summary: wrong code at -O2 on x86_64-linux-gnu in 32-bit mode
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: su at cs dot ucdavis.edu

The current gcc trunk mis-compiles the following code on x86_64-linux at -O2 in
32-bit mode. This is a regression from 4.8.x. 

$ gcc-trunk -v
gcc version 4.9.0 20130710 (experimental) [trunk revision 200864] (GCC) 
$
$ gcc-trunk -m32 -O2 small.c
$ a.out
1
$ gcc-trunk -m32 -O1 small.c
$ a.out
0
$ gcc-trunk -m32 -O3 small.c
$ a.out
0
$ gcc-4.8 -m32 -O2 small.c
$ a.out
0
$ 





int printf (const char *, ...);

int a[1], b, c, d, f, i; 
char e[1];

int
main ()
{
  for (; i < 1; i++)
if (!d) {
  if (!c) 
f = 2;
  e[0] &= f ^= 0;
}
  b = a[e[0] >> 1 & 1];
  printf ("%d\n", b);
  return 0;
}


[Bug tree-optimization/57876] New: wrong code at -O3 on x86_64-linux-gnu in 32-bit mode

2013-07-10 Thread su at cs dot ucdavis.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57876

Bug ID: 57876
   Summary: wrong code at -O3 on x86_64-linux-gnu in 32-bit mode
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: su at cs dot ucdavis.edu

The current gcc trunk mis-compiles the following code on x86_64-linux at -O3 in
32-bit mode. This is a regression from 4.8.x. 

$ gcc-trunk -v   
gcc version 4.9.0 20130710 (experimental) [trunk revision 200864] (GCC) 
$
$ gcc-trunk -m32 -O3 small.c
$ a.out
0
$ gcc-trunk -m32 -O2 small.c
$ a.out
1
$ gcc-4.8 -m32 -O3 small.c
$ a.out
1
$ 





int printf (const char *, ...);

int a, b = 1, c, *d = &c, f, *g, h, j;
static int e;

int
main ()
{
  int i;
  for (i = 0; i < 2; i++)
{
  long long k = b;
  int l;
  for (f = 0; f < 8; f++)
{
  int *m = &e;
  j = *d;
  h = a * j - 1;
  *m = (h == 0) < k;
  g = &l;
}
}
  printf ("%d\n", e);
  return 0;
}


[Bug tree-optimization/57877] New: wrong code at -Os on x86_64-linux-gnu in 32-bit mode

2013-07-10 Thread su at cs dot ucdavis.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57877

Bug ID: 57877
   Summary: wrong code at -Os on x86_64-linux-gnu in 32-bit mode
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: su at cs dot ucdavis.edu

The current gcc trunk mis-compiles the following code on x86_64-linux at -Os in
32-bit mode. This is a regression from 4.8.x. 

$ gcc-trunk -v   
gcc version 4.9.0 20130710 (experimental) [trunk revision 200864] (GCC) 
$ 
$ gcc-trunk -m32 -Os small.c
$ a.out
0
$ gcc-trunk -m32 -O3 small.c
$ a.out
1
$ gcc-4.8 -m32 -Os small.c
$ a.out
1
$ 


-


int printf (const char *, ...);

int a, b, *c = &b, e, f = 6, g, h;
short d;

static unsigned char
foo (unsigned long long p1, int *p2)
{
  for (; g <= 0; g++)
{
  short *i = &d;
  int *j = &e;
  h = *c;
  *i = h;
  *j = (*i == *p2) < p1;
}
  return 0;
}

int
main ()
{
  foo (f, &a);
  printf ("%d\n", e);
  return 0;
}


[Bug rtl-optimization/57878] New: Incorrect code: live register clobbered in split2

2013-07-10 Thread eraman at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57878

Bug ID: 57878
   Summary: Incorrect code: live register clobbered in split2
   Product: gcc
   Version: 4.8.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: eraman at google dot com

Created attachment 30493
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30493&action=edit
Preprocessed source of the test case

$ ./g++_4_8 --version
g++_4_8 (GCC) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.

(Compiling the attached preprocessed source)
$ ./g++_4_8 -m32 -O2 -fno-omit-frame-pointer -fPIC -std=gnu++11 -c r.ii
$ objdump -d --no-show-raw-insn r.o  > r.s

In the attached r.s, in function
_ZNSt6vectorIN3FDB9ChunkDataESaIS1_EE19_M_emplace_back_auxIIRKS1_EEEvDpOT_, the
sub instruction at address 0xfd writes to edx, which is subsequently stored at
[rbp-0x24]. edx is immediately clobbered. At 0x119, rbp-0x24 is clobbered and
hence the load at 0x168 loads an incorrect value into ecx. 

After reload, we see the following:

(insn 117 241 196 7 (parallel [
(set (reg/f:SI 1 dx [orig:138 D.3282 ] [138])
(minus:SI (reg/f:SI 1 dx [orig:138 D.3282 ] [138])
(reg/v/f:SI 5 di [orig:103 __cur ] [103])))
(clobber (reg:CC 17 flags))
]) 309 {*subsi_1}
 (nil))
(insn 196 117 268 7 (set (mem/c:SI (plus:SI (reg/f:SI 6 bp)
(const_int -36 [0xffdc])) [21 %sfp+-36 S4 A32])
(reg/f:SI 1 dx [orig:138 D.3282 ] [138])) 89 {*movsi_internal}
 (expr_list:REG_DEAD (reg/f:SI 1 dx [orig:138 D.3282 ] [138])
(nil)))
...
(insn 119 274 237 7 (set (reg:DI 0 ax [193])
(mem:DI (plus:SI (reg/v/f:SI 0 ax [orig:109 __first ] [109])
(const_int 4 [0x4])) [10 MEM[base: _1, index: _28, offset: 0]+0
S8 A64])) r.ii:197 88 {*movdi_internal}
 (expr_list:REG_DEAD (reg/v/f:SI 0 ax [orig:109 __first ] [109])
(nil)))
...
(insn 234 120 200 7 (set (reg/f:SI 1 dx [orig:138 D.3282 ] [138])
(mem/c:SI (plus:SI (reg/f:SI 6 bp)
(const_int -36 [0xffdc])) [21 %sfp+-36 S4 A32]))
r.ii:197 89 {*movsi_internal}
 (expr_list:REG_DEAD (reg/f:SI 138 [ D.3282 ])
(nil)))
...
(insn 232 122 265 7 (set (mem/c:SI (plus:SI (reg/f:SI 6 bp)
(const_int -36 [0xffdc])) [21 %sfp+-36 S4 A32])
(reg/f:SI 1 dx [orig:138 D.3282 ] [138])) r.ii:197 89 {*movsi_internal}
 (nil))

The fill in 234 and the second spill in 232 are redundant. Insn 234 gets
removed by ce3 later, but 234 remains till the end. Meanwhile, 119 writes to a
DI mode register and gets split by split2 into eax and edx and hence the store
in 232 ends up clobbering the right value. 


When compiled with a trunk built 2 weeks ago, the compiler ICEs with the
following stacck trace:

r.ii: In member function ‘void std::vector<_Tp,
_Alloc>::_M_emplace_back_aux(_Args&& ...) [with _Args = {const
FDB::ChunkData&}; _Tp = FDB::ChunkData; _Alloc =
std::allocator]’:
r.ii:192:3: internal compiler error: in assign_by_spills, at lra-assigns.c:1266
   }
   ^
0x9ba360 assign_by_spills
/usr/local/google/home/eraman/gcc/trunk/gcc/lra-assigns.c:1266
0x9bb013 lra_assign()
/usr/local/google/home/eraman/gcc/trunk/gcc/lra-assigns.c:1423
0x9b71b9 lra(_IO_FILE*)
/usr/local/google/home/eraman/gcc/trunk/gcc/lra.c:2342
0x97d7b8 do_reload
/usr/local/google/home/eraman/gcc/trunk/gcc/ira.c:4689
0x97d7b8 rest_of_handle_reload
/usr/local/google/home/eraman/gcc/trunk/gcc/ira.c:4801

[Bug rtl-optimization/57878] Incorrect code: live register clobbered in split2

2013-07-10 Thread eraman at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57878

--- Comment #1 from Easwaran Raman  ---
Created attachment 30494
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30494&action=edit
Disassembly of the compiled r.ii


[Bug fortran/57871] gfortran -freal-4-real-16 gives wrong result for selected_real_kind(1)

2013-07-10 Thread sgk at troutmask dot apl.washington.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57871

--- Comment #3 from Steve Kargl  ---
On Wed, Jul 10, 2013 at 05:42:03PM +, kargl at gcc dot gnu.org wrote:
>   implicit none
>   integer,parameter:: p1 = selected_real_kind(1)
> 
> This initialization expression is requesting the type with
> smallest precision that exceeds 1.  With -freal-4-real-16,
> that type is double precision (ie kind=8).  The problem
> lies in gfc_simplify_selected_real_kind.  It has no knowledge
> of the -freal-*-real-* options.  The loop (lines 5447-5457)

(remove loop code)

> searchs the ordered set [24, 53, 53, 113] (on FreeBSD-i386) or
> [24, 53, 64, 113] (on FreeBSD-amd64).  In either case, the
> initialization expression returns REAL(4).  However, with
> -freal-4-real-16,  one might expect the ordered set to be
> searched is [113, 53, 64, 113] as REAL(4) has been promoted
> to REAL(16).

The results of running John's code are odder than what one
might expect.

The normal results:

% gfc4x -o foo foo.f90 && ./foo
 kind(1.0_p1)   4 precision(1.0_p1)   6
 kind(1.0_dp)   8 precision(1.0_dp)  15

One might expect the first line to be 8 and 15, respectively.

% gfc4x -o foo foo.f90 -freal-4-real-16 && ./foo
 kind(1.0_p1)  16 precision(1.0_p1)  33
 kind(1.0_dp)   8 precision(1.0_dp)  15

Here the default real kind is promoted to REAL(8), but literal
constants declared with a kind type suffix are not promoted.
The first line is the correct output, although one might
anticipate 8 and 15.  But, what may be surprising is that the 
double precision kind has been bumped to quad precision. 

troutmask:sgk[207] gfc4x -o foo foo.f90 -fdefault-real-8 && ./foo
 kind(1.0_p1)   4 precision(1.0_p1)   6
 kind(1.0_dp)  16 precision(1.0_dp)  33

I've always hated these type options as a lzy programmer's
crutch who refuses to properly port an algorithm from 
one precision to another.


[Bug lto/57879] New: GCC with -flto generates invalid code for genmddeps program

2013-07-10 Thread d.g.gorbachev at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57879

Bug ID: 57879
   Summary: GCC with -flto generates invalid code for genmddeps
program
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: lto
  Assignee: unassigned at gcc dot gnu.org
  Reporter: d.g.gorbachev at gmail dot com
  Host: i686-pc-linux-gnu
Target: i686-pc-linux-gnu
 Build: i686-pc-linux-gnu

Created attachment 30495
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30495&action=edit
Self-contained (though not yet minimized) testcase

A function htab_create_typed_alloc.constprop.9 expects arguments in registers,
but called from main() with arguments on the stack.


[Bug lto/57879] GCC with -flto generates invalid code for genmddeps program

2013-07-10 Thread d.g.gorbachev at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57879

--- Comment #1 from Dmitry Gorbachev  ---
GCC 20130526 (r199345) - works:

08048a10 :
main():
[...]
 8048a62:   mov$0x8048f60,%ecx
 8048a67:   mov$0x8048f80,%edx
 8048a6c:   mov$0xa1,%eax
 8048a71:   call   8049790 
[...]
08049790 :
htab_create_typed_alloc.constprop.9():
 8049790:   push   %ebp
 8049791:   mov%edx,%ebp
[...]
 80497e8:   mov%ebp,(%edi)
[...]

GCC 20130609 (r199874) - fails:

08048a10 :
main():
[...]
 8048a62:   movl   $0x8048f80,0x8(%esp)
 8048a6a:   movl   $0x8048fa0,0x4(%esp)
 8048a72:   movl   $0xa1,(%esp)
 8048a79:   call   80497b0 
[...]
080497b0 :
htab_create_typed_alloc.constprop.9():
 80497b0:   push   %ebp
 80497b1:   mov%edx,%ebp
[...]
 8049808:   mov%ebp,(%edi)
[...]

GCC 4.9.0 20130707 (experimental) - still fails.


[Bug lto/57879] GCC with -flto generates invalid code for genmddeps program

2013-07-10 Thread izamyatin at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57879

Igor Zamyatin  changed:

   What|Removed |Added

 CC||izamyatin at gmail dot com

--- Comment #2 from Igor Zamyatin  ---
Dup of PR57602, I suppose


[Bug fortran/57871] gfortran -freal-4-real-16 gives wrong result for selected_real_kind(1)

2013-07-10 Thread harper at msor dot vuw.ac.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57871

--- Comment #4 from harper at msor dot vuw.ac.nz ---
The reason I sent that bug report is that I had read the manual and
found that -freal-4-real-16 makes the available real kinds 8, 10, 16.
The Fortran standard says selected_real_kind(1) must give the kind with
the smallest available decimal precision that has precison at least 1. 
In the circumstances that is kind 8. The manual refers to promotion of
REAL(KIND=M) entities. Selected_real_kind is an integer entity not a
real one.

On Wed, 10 Jul 2013, dominiq at lps dot ens.fr wrote:

> Date: Wed, 10 Jul 2013 13:07:40 +
> From: dominiq at lps dot ens.fr 
> To: john.har...@vuw.ac.nz
> Subject: [Bug fortran/57871] gfortran -freal-4-real-16 gives wrong result for
> selected_real_kind(1)
> Resent-Date: Wed, 10 Jul 2013 13:08:02 +
> Resent-From: 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57871
>
> Dominique d'Humieres  changed:
>
>   What|Removed |Added
> 
> Status|UNCONFIRMED |RESOLVED
> Resolution|--- |INVALID
>
> --- Comment #1 from Dominique d'Humieres  ---
>> gfortran 4.8.1 -freal-4-real-16 gives real(16) kind with
>> selected_real_kind(1) but it ought to give real(8) because that is
>> the smallest decimal precision available with that compiler option.
>> Same problem with -freal-4-real-10 giving real(10) instead of real(8). ...
>
> Why are you expecting that? The manual says:
>
> -freal-4-real-8
> -freal-4-real-10
> -freal-8-real-4
> -freal-8-real-10
> -freal-8-real-16
> Promote all REAL(KIND=M) entities to REAL(KIND=N) entities. If REAL(KIND=N) is
> unavailable, then an error will be issued. All other real kind types are
> unaffected by this option. These options should be used with care and may not
> be suitable for your codes. Areas of possible concern include calls to 
> external
> procedures, alignment in EQUIVALENCE and/or COMMON, generic interfaces, BOZ
> literal constant conversion, and I/O. Inspection of the intermediate
> representation of the translated Fortran code, produced by
> -fdump-tree-original, is suggested.
>
> and your example does exactly that: Closing as INVALID.
>
> -- 
> You are receiving this mail because:
> You reported the bug.
>
>
>


-- John Harper, School of Mathematics Statistics and Operations Research
Victoria University, PO Box 600, Wellington 6140, New Zealand
e-mail john.har...@vuw.ac.nz phone (+64)(4)463 5276 fax (+64)(4)463 5045


[Bug target/57792] toplevel configure should enable "--with-sysroot="`xcrun --show-sdk-path`"" for darwin13 and later

2013-07-10 Thread mrs at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57792

mrs at gcc dot gnu.org  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
Version|unknown |4.8.0
 Resolution|--- |FIXED

--- Comment #8 from mrs at gcc dot gnu.org  ---
Fixed.


[Bug rtl-optimization/57462] ira-costs considers only a single register at a time

2013-07-10 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57462

Ramana Radhakrishnan  changed:

   What|Removed |Added

 CC||ramana at gcc dot gnu.org

--- Comment #3 from Ramana Radhakrishnan  ---
This is part of the reason why on trunk we currently disable 64 bit arithmetic
in neon in a large number of cases. It's sometimes just not worth it -
Additionally neon doesn't have comparison operations so many times one has
noticed that we keep doing a lot of operations on the neon side and then you
just have to move back to the integer side to the comparisons. So there are
times when this doesn't happen properly. 

Ramana


[Bug target/57731] [4.9 Regression] ICE in extract_insn, at recog.c:2158 (arm-linux)

2013-07-10 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57731

Ramana Radhakrishnan  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2013-07-10
 CC||ramana at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |ramana at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Ramana Radhakrishnan  ---
confirmed. mine.


[Bug target/57731] [4.9 Regression] ICE in extract_insn, at recog.c:2158 (arm-linux)

2013-07-10 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57731

Ramana Radhakrishnan  changed:

   What|Removed |Added

   Target Milestone|--- |4.9.0


[Bug target/57329] ICE with -O2 and -mthumb

2013-07-10 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57329

Ramana Radhakrishnan  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||ramana at gcc dot gnu.org
 Resolution|--- |FIXED
   Target Milestone|--- |4.8.2

--- Comment #5 from Ramana Radhakrishnan  ---
fixed.


[Bug target/57837] ARM function pointer tailcall miscompilation regression

2013-07-10 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57837

Ramana Radhakrishnan  changed:

   What|Removed |Added

   Keywords||wrong-code
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2013-07-10
 CC||ramana at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |ramana at gcc dot 
gnu.org
   Target Milestone|--- |4.9.0
 Ever confirmed|0   |1

--- Comment #1 from Ramana Radhakrishnan  ---
mine.


[Bug c++/57827] compiler segmentation fault

2013-07-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57827

Paolo Carlini  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
  Known to work||4.9.0
 Resolution|--- |FIXED
  Known to fail||4.8.1

--- Comment #3 from Paolo Carlini  ---
I'm adding the testcase and closing the bug as fixed for 4.9.0.


[Bug c++/55004] [meta-bug] constexpr issues

2013-07-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55004

Bug 55004 depends on bug 57827, which changed state.

Bug 57827 Summary: compiler segmentation fault
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57827

   What|Removed |Added

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


[Bug c++/57109] ice tsubst_copy, at cp/pt.c:12171

2013-07-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57109

Paolo Carlini  changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed|2013-04-29 00:00:00 |2013-07-10
 Ever confirmed|0   |1

--- Comment #3 from Paolo Carlini  ---
Can you please try to reduce your testcase to a manageable size? Normally, for
proper C++ front-end issues less 50 lines are enough and no special command
line options are needed, but your *.i has a lot of target-specific code. We
have a wiki entry: http://gcc.gnu.org/wiki/A_guide_to_testcase_reduction

Thanks!


[Bug c++/56973] crash when capturing variables in nested lambdas

2013-07-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56973

Paolo Carlini  changed:

   What|Removed |Added

   Keywords||wrong-code
   Priority|P3  |P2


[Bug c++/56892] dllexport prevents inline inside dll

2013-07-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56892

Paolo Carlini  changed:

   What|Removed |Added

 CC||ktietz at gcc dot gnu.org

--- Comment #2 from Paolo Carlini  ---
Kai, can you have a look?


[Bug tree-optimization/55334] [4.8/4.9 Regression] mgrid regression (ipa-cp disables vectorization)

2013-07-10 Thread chris_s_jones at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55334

Chris Jones  changed:

   What|Removed |Added

 CC||chris_s_jones at yahoo dot com

--- Comment #32 from Chris Jones  ---
I'm curious if the original 172.mgrid regression is believed to still exist in
GCC 4.8.1.  I notice that ipa-cp.c has Martin's special case for RESTRICT
pointers, yet building 172.mgrid for AArch64 seems to result in an inlined
version of resid_() which does not get vectorized.  Using -fno-inline-functions
(or alternatively --param inline-min-speedup=17) produces code which runs
significantly faster.  It's remotely possible that I have some local edits
which are causing the regression, but I suspect that the issue is still present
for the mgrid case and wanted to verify that before attempting another
work-around.