[Bug inline-asm/40124] Inline asm should support limited control flow

2009-05-13 Thread scovich at gmail dot com


--- Comment #9 from scovich at gmail dot com  2009-05-13 07:55 ---
RE: __builtin_expect -- Thanks! It did help quite a bit, even though the
compiler was already emitting not-taken branch hints on its own.

RE: Filing bugs -- I have. This RFE arose out of Bug #40078, which was
triggered by attempts to work around Bug #40067. I still have some issues with
overconservative use of branch delay slots and possibly loop pipelining, but
haven't gotten to filing them yet. I've also filed other bugs in the past where
it would have been nice to work around using inline asm but control flow was a
pain.

In the end, is there any particular reason *not* to make inline asm easier to
use and more transparent to the compiler, given points #1 and #2? Invoking
point #3, what significant uses of computed gotos exist, other than to work
around switch statements that compile suboptimally? The docs don't mention any,
and yet we have them instead of (or in addition to) bug reports. 

I'd take a stab at implementing this myself -- it's probably a one-liner -- but
I've never hacked gcc before and have no clue where that one line might lurk. 

BTW, how does one exploit the compiler's overflow catching? I tried testing a+b
 a and a+b  b (for unsigned ints) with no luck, and there's no __builtin test
for overflow or carry. 


-- 


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



[Bug target/40068] GCC fails to apply dllexport attribute to typeinfo.

2009-05-13 Thread dannysmith at users dot sourceforge dot net


--- Comment #6 from dannysmith at users dot sourceforge dot net  2009-05-13 
08:12 ---
(In reply to comment #5)

   Also, I don't think this is necessarily an either-or situation; we could add
 my patch and have the typeinfo exported from the DLL, and also add yours so
 that clients could link a comdat copy (which would override the import stub)
 until we have a better solution for importing from the DLL.

Yes.  I was just thinking out loud.  I have no objection to your patch. 
Perhaps MULTIPLE_SYMBOL_SPACES should be defined in terms of an
-mmultiple-symbol-spaces target option , since if we depend on auto-import than
we should treat dll imports thae same as static lib imports.

 Also, how come emitting the typeinfo .linkonce as we currently do isn't the
 same as COMDAT for these purposes?
 
I'm not sure I understand your question.  In earlier versions of G++,  both
vtables and typeinfo were  always emitted with linkonce semantics, because of
the MULTIPLE_SYMBOL_SPACES define.  

Regards
Danny


-- 


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



[Bug inline-asm/40124] Inline asm should support limited control flow

2009-05-13 Thread jakub at gcc dot gnu dot org


--- Comment #10 from jakub at gcc dot gnu dot org  2009-05-13 08:19 ---
Of course there is a very important reason.  If you allow inline asms to change
control flow, even just to labels whose address has been taken through label,
you penalize a lot of code which doesn't change the control flow, as the
compiler will have to assume each inline asm which could possibly get at an
label address (not just directly, but through global variables, pointers etc.)
can jump to it.  That's an awful lot of extra flow graph edges and optimization
limitations.  Unless you'd invent some new syntax to say if an inline asm can
change control flow and by default assume it can't.


-- 


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



[Bug target/39942] Nonoptimal code - leaveq; xchg %ax,%ax; retq

2009-05-13 Thread jakub at gcc dot gnu dot org


--- Comment #18 from jakub at gcc dot gnu dot org  2009-05-13 08:30 ---
No, .p2align is the right thing to do, given that GCC doesn't have 100%
accurate information about instruction sizes (for e.g. inline asms it can't
have, for
stuff where branch shortening can decrease the size doesn't have it until the
shortening branch phase which is too late for this machine reorg, and in other
cases the lengths are just upper bounds).  Say .p2align 16,,5 says
insert a nop up to 5 bytes if you can reach the 16-byte boundary with it,
otherwise don't insert anything.  But that necessarily means that there were
less than 11 bytes in the same 16 byte page and if the lower bound insn size
estimation determined that in 11 bytes you can't have 3 branch changing
instructions, you are fine.  Breaking of fused compare and jump (32-bit code
only) is unfortunate, but inserting it before the cmp would mean often
unnecessarily large padding.


-- 


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



[Bug fortran/39624] short-list explicit interfaces in generic interfaces if no match is found

2009-05-13 Thread fxcoudert at gcc dot gnu dot org


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-05-13 08:56:15
   date||


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



[Bug libfortran/33905] show_backtrace hangs on SIGSEGV in malloc/free

2009-05-13 Thread fxcoudert at gcc dot gnu dot org


--- Comment #3 from fxcoudert at gcc dot gnu dot org  2009-05-13 09:03 
---
Frankly, this is a snag in a non-default debugging feature in rare conditions;
that has to be a third-order enhancement request, at least! :)  We cannot
provide completely foolproof debugging capablities anyway: people who want to
have the full power of debugging will be able to use gdb themselves. (Even with
a temporary file, other things can go wrong!)

I'd be in favour of closing this as WONTFIX, unless we have serious indication
that this actually happens often in non mixed-language cases. Toon, what's your
take?


-- 


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



[Bug c/40128] New: [ARM] Incorrect optimized code = -O2

2009-05-13 Thread al at alarsen dot net
This code:

# 1 fs.c
# 1 built-in
# 1 command line
# 1 fs.c

int foo(unsigned int bar)
{
 unsigned int mask = bar  0x8001;
 if (mask  0x8000)
  mask = 0x8000;
 return mask;
}

produces incorrect assembly code with -Os or -O2:

.file   fs.c
.text
.align  2
.global foo
.type   foo, %function
foo:
@ Function supports interworking.
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
cmp r0, #0
andge   r0, r0, #-2147483648 == should be -2147483647
movlt   r0, #-2147483648
@ lr needed for prologue
bx  lr
.size   foo, .-foo
.ident  GCC: (GNU) 4.1.2

*** Command line: arm-v4t-linux-gnueabi -save-temps -O2 fs.c

*** Output:
Using built-in specs.
Target: arm-v4t-linux-gnueabi
Configured with:
/home/alarsen/projects/toolchain/OSELAS.Toolchain-1.1.1/build-cross/gcc-4.1.2/configure
--host=i686-host-linux-gnu --target=arm-v4t-linux-gnueabi
--prefix=/opt/OSELAS.Toolchain-1.1.1/arm-v4t-linux-gnueabi/gcc-4.1.2-glibc-2.5-kernel-2.6.18
--with-sysroot=/opt/OSELAS.Toolchain-1.1.1/arm-v4t-linux-gnueabi/gcc-4.1.2-glibc-2.5-kernel-2.6.18/sysroot-arm-v4t-linux-gnueabi
--with-arch=armv4t --with-float=soft --with-fpu=vfp --disable-nls
--disable-multilib --enable-symvers=gnu --enable-__cxa_atexit --enable-shared
--enable-threads=posix --enable-languages=c,c++ --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.1.2

/opt/OSELAS.Toolchain-1.1.1/arm-v4t-linux-gnueabi/gcc-4.1.2-glibc-2.5-kernel-2.6.18/libexec/gcc/arm-v4t-linux-gnueabi/4.1.2/cc1
-E -quiet -v fs.c -march=armv4t -mfloat-abi=soft -mfpu=vfp -O2 -fpch-preprocess
-o fs.i
ignoring nonexistent directory
/opt/OSELAS.Toolchain-1.1.1/arm-v4t-linux-gnueabi/gcc-4.1.2-glibc-2.5-kernel-2.6.18/sysroot-arm-v4t-linux-gnueabi/usr/local/include
#include ... search starts here:
#include ... search starts here:

/opt/OSELAS.Toolchain-1.1.1/arm-v4t-linux-gnueabi/gcc-4.1.2-glibc-2.5-kernel-2.6.18/lib/gcc/arm-v4t-linux-gnueabi/4.1.2/include

/opt/OSELAS.Toolchain-1.1.1/arm-v4t-linux-gnueabi/gcc-4.1.2-glibc-2.5-kernel-2.6.18/lib/gcc/arm-v4t-linux-gnueabi/4.1.2/../../../../arm-v4t-linux-gnueabi/include

/opt/OSELAS.Toolchain-1.1.1/arm-v4t-linux-gnueabi/gcc-4.1.2-glibc-2.5-kernel-2.6.18/sysroot-arm-v4t-linux-gnueabi/usr/include
End of search list.

/opt/OSELAS.Toolchain-1.1.1/arm-v4t-linux-gnueabi/gcc-4.1.2-glibc-2.5-kernel-2.6.18/libexec/gcc/arm-v4t-linux-gnueabi/4.1.2/cc1
-fpreprocessed fs.i -quiet -dumpbase fs.c -march=armv4t -mfloat-abi=soft
-mfpu=vfp -auxbase fs -O2 -version -o fs.s
GNU C version 4.1.2 (arm-v4t-linux-gnueabi)
compiled by GNU C version 4.2.4 (Ubuntu 4.2.4-1ubuntu3).
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 2befb21690236570f62e4f3b11d6068c


-- 
   Summary: [ARM] Incorrect optimized code = -O2
   Product: gcc
   Version: 4.1.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: al at alarsen dot net
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: arm-v4t-linux-gnueabi


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



[Bug c/40129] New: M16C invalid shift count used by pack_d - ashldi3

2009-05-13 Thread eightdot at hotmail dot com
some disasm listings to show what is going wrong..
i cant find the guilty source files:-(
000fa8b2 ___pack_d:
snip
fadb7:   75 42   push.w:g r2//pushing 64 bit exponent [63:48]
fadb9:   75 42   push.w:g r2//pushing 64 bit exponent [47:32]
fadbb:   75 42   push.w:g r2//pushing 64 bit exponent [31:16]
fadbd:   75 40   push.w:g r0//pushing 64 bit exponent [15:0]
fadbf:   75 c2 34 00 mov.w:g #52,r2 //shift count to get exponent in
[62:52]
fadc3:   fd 83 6f 0f jsr.a f6f83 ___ashldi3
___ashldi3 detects that it needs to shift more then 32 bits and prepares to
shift by -(32-52) = 20 bits (and after that 'shift' by 32 by moving registers
around)

000f6f83 ___ashldi3:
snip
f7055:   73 b2 07mov.w:g 7[fb],r2 //src bit[15:0]
f7058:   73 b0 05mov.w:g 5[fb],r0 //src bit[31:16]
f705b:   72 b2 e2mov.b:g -30[fb],r1l  //shift count (20)
f705e:   72 23   mov.b:g r1l,r1h  //shift count (20)
f7060:   eb 21   sha.l r1h,r2r0   //the shift

The M16C/60, M16C/20, M16C/Tine Series Software Manual says:
If src is a register and you selected (.W) or (.L) for
 the size specifier (.size), the number of shifts 
 is –16 to +16. Although you can set 0, no bits are shifted and
 no flags are changed. If you set a value less than –16 or 
 greater than +16, the result of shift is indeterminate.

the actual result on my hardware is a shift by 4 (20  0xf).

i think ___ashldi3 (and friends!)
should (also) check if the shift is 16 
and only do the shift % 16 with the shift instruction and do the rest of the
shift by moving registers.


-- 
   Summary: M16C invalid shift count used by pack_d - ashldi3
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: eightdot at hotmail dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: m32c-unknown-elf


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



[Bug inline-asm/40124] Inline asm should support limited control flow

2009-05-13 Thread scovich at gmail dot com


--- Comment #11 from scovich at gmail dot com  2009-05-13 09:51 ---
 If you allow inline asms to change control flow, even just 
 to labels whose address has been taken through label, you 
 penalize a lot of code which doesn't change the control 
 flow, as the compiler will have to assume each inline asm 
 which could possibly get at an label address (not just 
 directly, but through global variables, pointers etc.) can
 jump to it.

I'm going to invoke #3 again to respond to these concerns:

a. This RFE is specifically limited to local control flow only, so the compiler
can safely ignore any label not in the asm's enclosing function, as well as
labels whose addresses are never taken (or provably never used). Computed gotos
appear to make the same assumptions, based on the docs' strong warning not
allow labels to leak out of their enclosing function in any way. 

b. While it's always possible that an asm could jump to a value loaded from an
arbitrary, dynamically-generated address, the same is true for computed gotos.
Either way, compiler analysis or not, doing so would almost certainly send you
to la-la land because label values aren't known until assembler time or later
and have no guaranteed relationship with each other. The only way to get a
valid label address is using one directly, or computing it with some sort of
base+(label-base). Either way requires taking the address of the desired label
at some point and tipping off the compiler.

c. It's pretty easy to write functions whose computed gotos defy static
analysis, but most of the time the compiler does pretty well. Well-written asm
blocks should access memory via m constraints -- which the compiler can
analyze -- rather than manually dereferencing a pointer passed in with an r
constraint. This is especially true for asm blocks with no internal control
flow, which this RFE encourages. 

d. If a code path is short/simple enough that incoming jumps penalize it
heavily (whether from computed gotos or jumps from asm), it's probably also
small enough that the compiler (or programmer, if need be) can duplicate it for
the short path. A big, ugly code path probably wouldn't even notice an extra
control flow arc or two.

In the end, a big goal of this RFE is to allow programmers to make the compiler
aware of control flow arcs they're already adding (or tempted to add) behind
its back. It therefore wouldn't strike me as much of a limitation if jumps to
labels not explicitly passed to the asm are unsupported and may lead to
undefined behavior.


-- 


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



[Bug c/40128] [ARM] Incorrect optimized code = -O2

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #1 from ramana at gcc dot gnu dot org  2009-05-13 09:52 ---
Can you try a newer version of the compiler ? 4.1.x is unsupported today. 

I can see this is fixed on trunk and 4.3 as of revisions 147467 147441. An
older version of 4.4 does not show this problem.


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||WONTFIX


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



[Bug debug/40126] [4.5 Regression] -O2 -g results in: can't resolve `.LFE95' {*UND* section} - `.Ltext0' {.text section}

2009-05-13 Thread rguenth at gcc dot gnu dot org


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu dot
   ||org
Summary|[4.5 regression] -O2 -g |[4.5 Regression] -O2 -g
   |results in: can't resolve   |results in: can't resolve
   |`.LFE95' {*UND* section} -  |`.LFE95' {*UND* section} -
   |`.Ltext0' {.text section}   |`.Ltext0' {.text section}
   Target Milestone|--- |4.5.0


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



[Bug inline-asm/40124] Inline asm should support limited control flow

2009-05-13 Thread rguenth at gcc dot gnu dot org


--- Comment #12 from rguenth at gcc dot gnu dot org  2009-05-13 09:58 
---
I strongly oppose to making asm handling even more complex.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||WONTFIX


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



[Bug target/37179] gcc emits bad opcode 'ffreep'

2009-05-13 Thread uros at gcc dot gnu dot org


--- Comment #16 from uros at gcc dot gnu dot org  2009-05-13 10:06 ---
Subject: Bug 37179

Author: uros
Date: Wed May 13 10:05:48 2009
New Revision: 147469

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=147469
Log:
PR target/37179
* config/i386/driver-i386.c (processor_signatures): New enum.
(SIG_GEODE): Move from vendor_signatures to processor_signatures.
(host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
processor signature to detect geode processor.


Modified:
branches/gcc-4_4-branch/gcc/ChangeLog
branches/gcc-4_4-branch/gcc/config/i386/driver-i386.c


-- 


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



[Bug middle-end/39246] FAIL: gcc.dg/uninit-13.c

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #2 from ramana at gcc dot gnu dot org  2009-05-13 10:08 ---
I can see this with trunk at r147467


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-05-13 10:08:01
   date||


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



[Bug tree-optimization/39251] FAIL: g++.dg/tree-ssa/new1.C scan-tree-dump-not forwprop1 = .* \+ -

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #3 from ramana at gcc dot gnu dot org  2009-05-13 10:10 ---
Appears on trunk as of r147467.


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-05-13 10:10:12
   date||


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



[Bug target/37987] iwmmxt: insn does not satisfy its constraints on (int64_t)

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #2 from ramana at gcc dot gnu dot org  2009-05-13 10:14 ---
Can you check this with a later compiler. 4.2.x is closed. Works for me with
current trunk.


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING


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



[Bug ada/37109] can't canadian cross ada (if host=target, but host!=build)

2009-05-13 Thread christian dot joensson at gmail dot com


--- Comment #2 from christian dot joensson at gmail dot com  2009-05-13 
10:24 ---
what is the current situation concerning gnatlib? is that passed explicitly
from stage to stage?


-- 

christian dot joensson at gmail dot com changed:

   What|Removed |Added

 CC||christian dot joensson at
   ||gmail dot com


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



[Bug ada/37109] can't canadian cross ada (if host=target, but host!=build)

2009-05-13 Thread christian dot joensson at gmail dot com


--- Comment #3 from christian dot joensson at gmail dot com  2009-05-13 
10:25 ---
sorry, I meant gnatbind instead of gnatlib...


-- 


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



[Bug target/34341] GCC generates incorrect code on ARM in certain case, resulting in stack corruption

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #1 from ramana at gcc dot gnu dot org  2009-05-13 10:52 ---
I see a problem with your testcase here. r is assigned to h which has not been
initialized if I uncomment the line //r=h as per your comment above.


int test_func(void *p) {
dummy_func();
register int r;
register void *h;
if (p == 0) {
return 0;
}
//r = (int)h;
return r;
}

I'm not sure what the bug is here because the testcase doesn't seem reasonable.


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING


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



[Bug c/40128] [ARM] Incorrect optimized code = -O2

2009-05-13 Thread al at alarsen dot net


--- Comment #2 from al at alarsen dot net  2009-05-13 11:20 ---
Created an attachment (id=17856)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17856action=view)
preprocessed intermediate


-- 


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



[Bug target/39942] Nonoptimal code - leaveq; xchg %ax,%ax; retq

2009-05-13 Thread vvv at ru dot ru


--- Comment #19 from vvv at ru dot ru  2009-05-13 11:42 ---
(In reply to comment #18)
 No, .p2align is the right thing to do, given that GCC doesn't have 100%
 accurate information about instruction sizes (for e.g. inline asms it can't
 have, for
 stuff where branch shortening can decrease the size doesn't have it until the
 shortening branch phase which is too late for this machine reorg, and in other
 cases the lengths are just upper bounds).  Say .p2align 16,,5 says
 insert a nop up to 5 bytes if you can reach the 16-byte boundary with it,
 otherwise don't insert anything.  But that necessarily means that there were
 less than 11 bytes in the same 16 byte page and if the lower bound insn size
 estimation determined that in 11 bytes you can't have 3 branch changing
 instructions, you are fine.  Breaking of fused compare and jump (32-bit code
 only) is unfortunate, but inserting it before the cmp would mean often
 unnecessarily large padding.

You are rigth, if padding required for every 16-byte page with 4 branches on
it. But Intel writes about 16-byte chunk, not 16-byte page.

Quote from Intel 64 and IA-32 Architectures Optimization Reference Manual:

Assembly/Compiler Coding Rule 10. (M impact, L generality) Do not put
more than four branches in a 16-byte chunk.

IMHO, here chunk - memory range from x to x+10h, where x - _any_ address. 


-- 


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



[Bug target/37386] Interrupt service routine for arm target corrupts program counter

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #2 from ramana at gcc dot gnu dot org  2009-05-13 12:31 ---
This appears to be fixed with trunk as of r147467. Can you reproduce this with
4.3 or 4.4 ? If not we can close this one out.

_Z18serial_IRQ_Routinev:
@ Interrupt Service Routine.
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
stmfd   sp!, {r0, r1, r2, r3, r4, ip}
mov r2, #0
ldr r3, .L9
ldr r0, .L9+4
mov r1, r2
.L6:
ldr r4, [r3, #36]
ldr ip, [r3, #40]
cmp r4, ip
bne .L2
ldr ip, [r3, #32]
cmp ip, #0
beq .L1
.L2:
ldr ip, [r3, #32]
sub ip, ip, #1
str ip, [r3, #32]
ldr ip, [r3, #40]
ldr r4, [r3, #40]
add r4, r4, #1
str r4, [r3, #40]
ldr r4, [r3, #40]
ldrbip, [r3, ip]@ zero_extendqisi2
cmp r4, #32
add r2, r2, #1
streq   r1, [r3, #40]
cmp r2, #16
strbip, [r0, #0]
bne .L6
.L1:
ldmfd   sp!, {r0, r1, r2, r3, r4, ip}
subspc, lr, #4
.L10:
.align  2
.L9:


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING


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



[Bug target/36966] arm iwmmxt builtin problem

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #2 from ramana at gcc dot gnu dot org  2009-05-13 12:34 ---
Appears with today's trunk (r147467) with the following options.

/home/ramrad01/fsfbugzilla/pr36966.c: In function 'foo':
/home/ramrad01/fsfbugzilla/pr36966.c:5: internal compiler error: in
arm_expand_binop_builtin, at config/arm/arm.c:16182
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-05-13 12:34:55
   date||


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



[Bug target/36798] internal compiler error: in arm_expand_binop_builtin, at config/arm/arm.c:12548

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #7 from ramana at gcc dot gnu dot org  2009-05-13 12:45 ---
I get an ICE with trunk as of r146467 using -flax-vector-conversions otherwise
the test doesn't compile.


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-05-13 12:45:52
   date||


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



[Bug bootstrap/40027] [4.4/4.5 regression] i686-pc-solaris2.10 bootstrap fails using Sun ld

2009-05-13 Thread ro at techfak dot uni-bielefeld dot de


--- Comment #5 from ro at techfak dot uni-bielefeld dot de  2009-05-13 
13:02 ---
Subject: Re:  [4.4/4.5 regression] i686-pc-solaris2.10 bootstrap fails using
Sun ld

jakub at gcc dot gnu dot org writes:

 Look for DEEP_BRANCH_PREDICTION in config/i386/*.  On i386/i486/i586 doing
 call 1f; 1:
 is just fine, but on several newer CPUs it confuses return prediction logic
 (more calls than rets), so when optimizing for those CPUs gcc calls a separate
 pad which just reads the return address from the stack and immediately 
 returns.
 This pad can be shared among all functions within the same binary or shared

Ok, thanks for the explanation.

 library.  If hidden linkonce doesn't work on some Solaris version, you should
 just make sure USE_HIDDEN_LINKONCE is 0 for that target.

Indeed: that far easier than determining which version of Sun ld has all
the necessary support.

Proposed patch here:

http://gcc.gnu.org/ml/gcc-patches/2009-05/msg00723.html

Thanks.
Rainer


-- 


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



[Bug c/37384] Assembler error message when building vlc-0.9.1

2009-05-13 Thread michael dot haubenwallner at salomon dot at


--- Comment #6 from michael dot haubenwallner at salomon dot at  2009-05-13 
13:08 ---
As this seems to be a bug in glibc headers:
Would it be feasible to add an include-fix for this, to be able to use gcc-4.3
with older glibc?


-- 

michael dot haubenwallner at salomon dot at changed:

   What|Removed |Added

 CC||michael dot haubenwallner at
   ||salomon dot at


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



[Bug rtl-optimization/40086] [4.5 Regression]: cris-elf gfortran.dg/forall_1.f90 -O1 execution

2009-05-13 Thread hp at gcc dot gnu dot org


--- Comment #12 from hp at gcc dot gnu dot org  2009-05-13 13:09 ---
The relax_delay_slots (first) call finds that there's a branch to a redundant
insn that it can eliminate.  It does this by redirecting the branch to a new or
existing label and deleting the insn, or rather move it and make it a USE-mark
at the new label.  When doing this, the old USE-mark quoted above (not
related to the new USE-mark by other means being before it in the execution
path) is now deemed unreachable and removed by jump.c:delete_related_insns. 
So, it seems a solution will include propagating existing USE-marks when
redirecting branch labels, perhaps in reorg_redirect_jump or update_block.


-- 


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



[Bug target/39942] Nonoptimal code - leaveq; xchg %ax,%ax; retq

2009-05-13 Thread rguenth at gcc dot gnu dot org


--- Comment #20 from rguenth at gcc dot gnu dot org  2009-05-13 13:31 
---
Instruction decoders generally operate on whole cache-lines, so 16-byte chunk
very very likely refers to a cache-line.


-- 


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



[Bug tree-optimization/39251] FAIL: g++.dg/tree-ssa/new1.C scan-tree-dump-not forwprop1 = .* \+ -

2009-05-13 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2009-05-13 13:35 ---
trunk or 4.4?


-- 


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



[Bug c/40128] [ARM] Incorrect optimized code = -O2

2009-05-13 Thread al at alarsen dot net


--- Comment #3 from al at alarsen dot net  2009-05-13 13:37 ---
(In reply to comment #1)
 Can you try a newer version of the compiler ? 4.1.x is unsupported today. 
 
 I can see this is fixed on trunk and 4.3 as of revisions 147467 147441. An
 older version of 4.4 does not show this problem.

Thanks - I can confirm that 4.2.4 does not show the problem either.


-- 

al at alarsen dot net changed:

   What|Removed |Added

  Known to fail||4.1.2
  Known to work||4.2.4


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



[Bug fortran/39782] [4.3/4.4 Regression] IO depends on uninitialised value

2009-05-13 Thread burnus at gcc dot gnu dot org


--- Comment #10 from burnus at gcc dot gnu dot org  2009-05-13 13:47 ---
For 4.4 the equivalent diff should be the following (untested). I don't see ad
hoc whether the sfree can be removed as well or not.

Index: libgfortran/io/transfer.c
===
--- libgfortran/io/transfer.c   (revision 147470)
+++ libgfortran/io/transfer.c   (working copy)
@@ -2148,7 +2148,6 @@ data_transfer_init (st_parameter_dt *dtp
  if (dtp-pos != dtp-u.p.current_unit-strm_pos)
{
  fbuf_flush (dtp-u.p.current_unit, 1);
- flush (dtp-u.p.current_unit-s);
  if (sseek (dtp-u.p.current_unit-s, dtp-pos - 1) == FAILURE)
{
  generate_error (dtp-common, LIBERROR_OS, NULL);
@@ -2951,10 +2950,7 @@ finalize_transfer (st_parameter_dt *dtp)

   if (dtp-u.p.current_unit-flags.form == FORM_UNFORMATTED
   file_position (dtp-u.p.current_unit-s) = dtp-rec)
-   {
- flush (dtp-u.p.current_unit-s);
- sfree (dtp-u.p.current_unit-s);
-   }
+   sfree (dtp-u.p.current_unit-s);
   return;
 }


-- 


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



[Bug target/40130] New: rint from gcc.c-torture/execute miscompiled with -march=i486

2009-05-13 Thread bonzini at gnu dot org
I see these failures when running the testsuite at -march=i486 (note:
execute/ieee means that -mieee-fp is also added to the command line)

FAIL: gcc.c-torture/execute/ieee/20010114-2.c execution,  -O1 
FAIL: gcc.c-torture/execute/ieee/20010114-2.c execution,  -O2 
FAIL: gcc.c-torture/execute/ieee/20010114-2.c execution,  -Os 
FAIL: gcc.c-torture/execute/ieee/20030331-1.c execution,  -O1 
FAIL: gcc.c-torture/execute/ieee/20030331-1.c execution,  -O2 
FAIL: gcc.c-torture/execute/ieee/20030331-1.c execution,  -O3
-fomit-frame-pointer 
FAIL: gcc.c-torture/execute/ieee/20030331-1.c execution,  -O3 -g 
FAIL: gcc.c-torture/execute/ieee/20030331-1.c execution,  -Os


-- 
   Summary: rint from gcc.c-torture/execute miscompiled with -
march=i486
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bonzini at gnu dot org
GCC target triplet: i686-pc-linux-gnu


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



[Bug target/40105] SH: 4.3/4.4 compilers segfault when recompiling itself on gentoo system

2009-05-13 Thread kkojima at gcc dot gnu dot org


--- Comment #4 from kkojima at gcc dot gnu dot org  2009-05-13 14:07 ---
Created an attachment (id=17857)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17857action=view)
a test case

I've got a small test case from libiberty/concat.c.
With -O1, 4.3 compiles vconcat_length to the codes below:

...
.L5:
jsr @r12! Call strlen
nop
add r0,r9
mov.l   @r8,r4
mov r4,r2
add #4,r2
mov.l   @(4,r8),r1
cmp/hs  r2,r1
bt/s.L4
mov r8,r2
mov.l   @(16,r8),r4
mov r13,r2
.L4:
mov r4,r1
add #4,r1
mov.l   r1,@r2
mov.l   @r4,r4
tst r4,r4
bf/s.L5
mov r9,r4   !!!
mov.l   .L17,r0
jsr @r0 ! Call malloc.
...

i.e. the delayed branch optimization fills a delay slot
with an inappropriate instruction at the line !!!.
I've confirmed that the 4.4 compiler's output is similar
and the outputs for 4.2 and 4.5 look correct even with -O.
I have no idea for what is going on ATM, though.


-- 


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



[Bug tree-optimization/33404] Predictive commoning + ivopts possibly introducing extra sign extensions.

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #5 from ramana at gcc dot gnu dot org  2009-05-13 14:33 ---
(In reply to comment #4)
 (In reply to comment #3)
  (In reply to comment #2)
   Also IV-opts is messing up anyways, it should have done out+1 as the base
   instead of out, blah.
  
  Filed as http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36905 .
 
 Can we close this bug, then, or is there some other problem reported in this
 testcase?  As far as I can tell, predictive commoning does not introduce any
 new sign extensions (it does not eliminate any, either, but that is not its
 job).
 

I am closing this because the problem is not in predictive commoning which is
doing the right thing and the problem is as per PR36905.


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug target/39244] Various cleanup tests fail

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #2 from ramana at gcc dot gnu dot org  2009-05-13 14:39 ---
I don't see these failing with trunk as of 147209 or on an
arm-none-linux-gnueabi 4.4.x on the testresults mailing list. Do these still
fail for your tester?


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING


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



[Bug c++/40131] New: [C++0x] uniform init with std::string causes internal compiler segfault

2009-05-13 Thread mobileforces at gmail dot com
Produce this bug by the following:

std::string foo {bar};


-- 
   Summary: [C++0x] uniform init with std::string causes internal
compiler segfault
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mobileforces at gmail dot com


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



[Bug c/37384] Assembler error message when building vlc-0.9.1

2009-05-13 Thread pinskia at gcc dot gnu dot org


--- Comment #7 from pinskia at gcc dot gnu dot org  2009-05-13 14:48 ---
(In reply to comment #6)
 As this seems to be a bug in glibc headers:
 Would it be feasible to add an include-fix for this, to be able to use gcc-4.3
 with older glibc?

It should have already been.  As libgfortran uses those headers.


-- 


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



[Bug target/38703] testsuite __gnu_mcount_nc link error when profiling on arm

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #5 from ramana at gcc dot gnu dot org  2009-05-13 14:51 ---
(In reply to comment #1)
 That's what dg-require-profiling does.
 
 IMHO this is a deficiency in your glibc. It's very hard to distinguish between
 something is subtly busted and my glibc sucks, so I'm not sure fixing this
 is appropriate for fsf gcc.
 

Given this bit here, can this now be closed as WONTFIX ?


-- 


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



[Bug fortran/34153] Debugging: Cannot set breakpoint in comment lines or END PROGRAM

2009-05-13 Thread burnus at gcc dot gnu dot org


--- Comment #4 from burnus at gcc dot gnu dot org  2009-05-13 14:53 ---
Subject: Bug 34153

Author: burnus
Date: Wed May 13 14:52:54 2009
New Revision: 147477

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=147477
Log:
2009-05-13  Tobias Burnus  bur...@net-b.de

PR fortran/34153
* gfortran.h (gfc_exec_op): Add EXEC_END_PROCEDURE.
* dump-parse-tree.c (show_code_node): Use EXEC_END_PROCEDURE.
* trans.c (gfc_trans_code): Ditto.
* resolve.c (resolve_code): Ditto.
* st.c (gfc_free_statement): Ditto.


Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/dump-parse-tree.c
trunk/gcc/fortran/gfortran.h
trunk/gcc/fortran/parse.c
trunk/gcc/fortran/resolve.c
trunk/gcc/fortran/st.c
trunk/gcc/fortran/trans.c


-- 


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



[Bug debug/40109] Incorrect debug info nesting for typedef statements within namespaces

2009-05-13 Thread dodji at gcc dot gnu dot org


--- Comment #2 from dodji at gcc dot gnu dot org  2009-05-13 14:58 ---
Patch submitted for review at
http://gcc.gnu.org/ml/gcc-patches/2009-05/msg00706.html.


-- 

dodji at gcc dot gnu dot org changed:

   What|Removed |Added

Summary| Incorrect debug info   |Incorrect debug info nesting
   |nesting for typedef |for typedef statements
   |statements within namespaces|within namespaces


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



[Bug tree-optimization/39251] FAIL: g++.dg/tree-ssa/new1.C scan-tree-dump-not forwprop1 = .* \+ -

2009-05-13 Thread dave at hiauly1 dot hia dot nrc dot ca


--- Comment #5 from dave at hiauly1 dot hia dot nrc dot ca  2009-05-13 
15:20 ---
Subject: Re:  FAIL: g++.dg/tree-ssa/new1.C scan-tree-dump-not forwprop1 = .*
\+ -

 trunk or 4.4?

I see it in trunk revision 147374.

Dave


-- 


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



[Bug c/37384] Assembler error message when building vlc-0.9.1

2009-05-13 Thread michael dot haubenwallner at salomon dot at


--- Comment #8 from michael dot haubenwallner at salomon dot at  2009-05-13 
15:21 ---
(In reply to comment #7)
 (In reply to comment #6)
  Would it be feasible to add an include-fix for this
 It should have already been.  As libgfortran uses those headers.

Hmm, cannot find anything related in inclhack.def on either gcc-4_3-branch,
gcc-4_4-branch or trunk. What did I miss here?


-- 


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



[Bug fortran/34153] Debugging: Cannot set breakpoint in comment lines or END PROGRAM

2009-05-13 Thread burnus at gcc dot gnu dot org


--- Comment #5 from burnus at gcc dot gnu dot org  2009-05-13 16:14 ---
FIXED on the trunk (4.5). Thanks for the bug report!


-- 

burnus at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug debug/40126] [4.5 Regression] -O2 -g results in: can't resolve `.LFE95' {*UND* section} - `.Ltext0' {.text section}

2009-05-13 Thread hjl dot tools at gmail dot com


--- Comment #3 from hjl dot tools at gmail dot com  2009-05-13 16:32 ---
It is caused by revision 14734:

http://gcc.gnu.org/ml/gcc-cvs/2009-05/msg00316.html


-- 


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



[Bug target/40130] rint from gcc.c-torture/execute miscompiled with -march=i486

2009-05-13 Thread ubizjak at gmail dot com


--- Comment #2 from ubizjak at gmail dot com  2009-05-13 16:34 ---
Adding -ffloat-store also fixes these failures.


-- 


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



[Bug target/35623] RTL check failure in arm_const_double_rtx

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #3 from ramana at gcc dot gnu dot org  2009-05-13 16:34 ---
Can you try a later compiler ?


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING


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



[Bug rtl-optimization/39836] [4.4/4.5 regression] unoptimal code generated

2009-05-13 Thread ramana at gcc dot gnu dot org


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-05-13 16:47:27
   date||


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



[Bug target/40130] rint from gcc.c-torture/execute miscompiled with -march=i486

2009-05-13 Thread joseph at codesourcery dot com


--- Comment #3 from joseph at codesourcery dot com  2009-05-13 16:50 ---
Subject: Re:  rint from gcc.c-torture/execute miscompiled
 with -march=i486

On Wed, 13 May 2009, ubizjak at gmail dot com wrote:

 Adding -ffloat-store also fixes these failures.

ieee.exp already uses -ffloat-store on x86.


-- 


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



[Bug regression/40132] New: failure to assign asm constraints properly

2009-05-13 Thread rostedt at goodmis dot org
# gcc -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4.4.0/configure --prefix=/usr/local/dist
--program-prefix=dist- --without-doc --enable-bootstrap
Thread model: posix
gcc version 4.4.0 (GCC) 

I just compiled to gcc 4.4.0 (replacing my 4.2.2 version) and found that the
function_graph tracer in linux broke. Investigating it further, I found that
gcc did not properly assign the constraints used in arch/x86/kernel/ftrace.c
(Linux 2.6.30-rc5).

Maybe the constraints are not assigned properly, but it worked in all my
previous versions of gcc, and I do not see anything wrong with it.

Here's the code (prepare_ftrace_return):

unsigned long return_hooker = (unsigned long)
return_to_handler;


[...]
/*
 * Protect against fault, even if it shouldn't
 * happen. This tool is too much intrusive to
 * ignore such a protection.
 */
asm volatile(
1:  _ASM_MOV  (%[parent]), %[old]\n
2:  _ASM_MOV  %[return_hooker], (%[parent])\n
   movl $0, %[faulted]\n
3:\n

.section .fixup, \ax\\n
4: movl $1, %[faulted]\n
   jmp 3b\n
.previous\n

_ASM_EXTABLE(1b, 4b)
_ASM_EXTABLE(2b, 4b)

: [old] =r (old), [faulted] =r (faulted)
: [parent] r (parent), [return_hooker] r (return_hooker)
: memory
);

Here's what gcc 4.2.2 does (working):

80228893:   48 c7 c0 3d be 20 80mov$0x8020be3d,%rax
8022889a:   4c 8b 27mov(%rdi),%r12
8022889d:   48 89 07mov%rax,(%rdi)
802288a0:   b8 00 00 00 00  mov$0x0,%eax
802288a5:   85 c0   test   %eax,%eax

The return_hooker is put into %rax, old is %r12 and all is fine.

But gcc 4.4.0 decided to use %r12 for both the return_hooker and old!

80229503:   49 c7 c4 7d bf 20 80mov$0x8020bf7d,%r12
8022950a:   4c 8b 27mov(%rdi),%r12
8022950d:   4c 89 27mov%r12,(%rdi)
80229510:   b8 00 00 00 00  mov$0x0,%eax
80229515:   85 c0   test   %eax,%eax

Thus overwriting the return_hooker variable before it is used as an input!

Is there something wrong with the constraints, or is this indeed a bug in GCC?


-- 
   Summary: failure to assign asm constraints properly
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: critical
  Priority: P3
 Component: regression
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rostedt at goodmis dot org


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



[Bug libstdc++/40133] New: exception propagation support not enabled in libstdc++ 4.4 on {armeabi,hppa}-linux

2009-05-13 Thread debian-gcc at lists dot debian dot org
Tracking http://gcc.gnu.org/ml/gcc/2009-05/msg00035.html as a bug report.

Paolo checked in a patch in rev 147123 on the gcc-4_4-branch to do link tests
for the atomic builtins, which works ok on hppa, but fails for arm.


-- 
   Summary: exception propagation support not enabled in libstdc++
4.4 on {armeabi,hppa}-linux
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: debian-gcc at lists dot debian dot org
GCC target triplet: arm-linux-gnueabi hppa-linux-gnu


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



[Bug target/40134] New: symbols not resolved when building shared libraries (link with -lgcc_s -lgcc?)

2009-05-13 Thread debian-gcc at lists dot debian dot org
this showed up when trying to address PR40133. Enabling the exception
propagation support keeps the __sync_val_compare_and_swap_4 unresolved.

/usr/bin/ld: ./atomic-1.exe: hidden symbol `__sync_val_compare_and_swap_4' in
/home/doko/gcc/4.4/gcc-4.4-4.4.0/build/gcc/libgcc.a(linux-atomic.o) is
referenced by DSO
/usr/bin/ld: final link failed: Nonrepresentable section on output

Linking the shared libstdc++ with both -lgcc_s and -lgcc does fix these.

There seem to be two issues:

 - libtool currently doesn't allow to link with -lgcc_s -lgcc (in this order). 
   see http://gcc.gnu.org/ml/libstdc++/2009-05/msg00064.html

 - g++ should link be default with -lgcc_s -lgcc? this is how I understand
   http://gcc.gnu.org/ml/gcc/2009-05/msg00039.html


-- 
   Summary: symbols not resolved when building shared libraries
(link with -lgcc_s -lgcc?)
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: debian-gcc at lists dot debian dot org
GCC target triplet: arm-linux-gnueabi


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



[Bug libstdc++/40133] exception propagation support not enabled in libstdc++ 4.4 on {armeabi,hppa}-linux

2009-05-13 Thread debian-gcc at lists dot debian dot org


--- Comment #1 from debian-gcc at lists dot debian dot org  2009-05-13 
17:07 ---
the arm failure is PR40134 now.


-- 


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



[Bug target/39942] Nonoptimal code - leaveq; xchg %ax,%ax; retq

2009-05-13 Thread vvv at ru dot ru


--- Comment #21 from vvv at ru dot ru  2009-05-13 17:13 ---
I guess! Your patch is absolutely correct for AMD AthlonTM 64 and AMD OpteronTM
processors, but it is nonoptimal for Intel processors. Because:

1. AMD limitation for 16-bytes page (memory range XXX0 - XXXF), but
Intel limitation for 16-bytes chunk  (memory range  - +10h)
2. AMD - maximum of _THREE_ near branches (CALL, JMP, conditional branches, or
returns),
Intel -  maximum of _FOUR_ branches!

Quotation from Software Optimization Guide for AMD64 Processors

6.1  Density of Branches
When possible, align branches such that they do not cross a 16-byte boundary.

The AMD AthlonTM 64 and AMD OpteronTM processors have the capability to cache
branch-prediction history for a maximum of three near branches (CALL, JMP,
conditional branches, or returns) per 16-byte fetch window. A branch
instruction that crosses a 16-byte boundary is counted in the second 16-byte
window. Due to architectural restrictions, a branch that is split across a
16-byte
boundary cannot dispatch with any other instructions when it is predicted
taken. Perform this alignment by rearranging code; it is not beneficial to
align branches using padding sequences.

The following branches are limited to three per 16-byte window:

jcc   rel8
jcc   rel32
jmp   rel8
jmp   rel32
jmp   reg
jmp   WORD PTR
jmp   DWORD PTR
call  rel16
call  r/m16
call  rel32
call  r/m32

Coding more than three branches in the same 16-byte code window may lead to
conflicts in the branch target buffer. To avoid conflicts in the branch target
buffer, space out branches such that three or fewer exist in a given 16-byte
code window. For absolute optimal performance, try to limit branches to one per
16-byte code window. Avoid code sequences like the following:
ALIGN 16
label3:
 call   label1 ;  1st branch in 16-byte code   window
 jc label3 ;  2nd branch in 16-byte code   window
 call   label2 ;  3rd branch in 16-byte code   window
 jnzlabel4 ;  4th branch in 16-byte code   window
   ;  Cannot be predicted.
If there is a jump table that contains many frequently executed branches, pad
the table entries to 8 bytes each to assure that there are never more than
three branches per 16-byte block of code.
Only branches that have been taken at least once are entered into the dynamic
branch prediction, and therefore only those branches count toward the
three-branch limit.




-- 


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



[Bug fortran/40039] Procedures as actual arguments: Check intent of arguments

2009-05-13 Thread janus at gcc dot gnu dot org


--- Comment #3 from janus at gcc dot gnu dot org  2009-05-13 17:15 ---

 FAIL: gfortran.dg/interface_19.f90  -O0  (test for excess errors)
 FAIL: gfortran.dg/proc_ptr_result_1.f90  -O0  (test for excess errors)
 
 The last of these three test cases is probably invalid, the second failure
 seems to be a problem with intrinsics, and about the first one I'm not sure.

For intrinsics, the intent of the arguments is currently not considered at all.
We need gfc_intrinsic_arg to have an 'intent' member. The F03 standard says:   

The dummy arguments of the specific intrinsic procedures in 13.6 have
INTENT(IN). The dummy arguments of the generic intrinsic procedures in 13.7
have INTENT(IN) if the intent is not stated explicitly.

The test case proc_ptr_result_1.f90 is invalid indeed. Relevant quote from the
standard:

Section 5.1.2.7:
INTENT (INOUT) is not equivalent to omitting the INTENT attribute. The argument
corresponding to an INTENT (INOUT) dummy argument always shall be definable,
while an argument corresponding to a dummy argument without an INTENT attribute
need be definable only if the dummy argument is actually redefined.


-- 


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



[Bug regression/40132] failure to assign asm constraints properly

2009-05-13 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2009-05-13 17:17 ---
What GCC is doing is correct according to the source you gave it.  The source
needs to be modified to mark old as being an early clobber.

Like:
asm volatile(
1:  _ASM_MOV  (%[parent]), %[old]\n
2:  _ASM_MOV  %[return_hooker], (%[parent])\n
   movl $0, %[faulted]\n
3:\n

.section .fixup, \ax\\n
4: movl $1, %[faulted]\n
   jmp 3b\n
.previous\n

_ASM_EXTABLE(1b, 4b)
_ASM_EXTABLE(2b, 4b)

: [old] =r (old), [faulted] =r (faulted)
: [parent] r (parent), [return_hooker] r (return_hooker)
: memory
);


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Severity|critical|normal
 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug middle-end/40095] [4.5 Regression] Revision 147342/147343 caused extra failures

2009-05-13 Thread matz at gcc dot gnu dot org


--- Comment #4 from matz at gcc dot gnu dot org  2009-05-13 17:51 ---
flatten-2.c is the more important one.  We leave the static function
doubleindirect1 in there, which we shouldn't.


-- 


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



[Bug target/40130] rint from gcc.c-torture/execute miscompiled with -march=i486

2009-05-13 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2009-05-13 17:57 ---
So -- invalid?


-- 


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



[Bug target/40130] rint from gcc.c-torture/execute miscompiled with -march=i486

2009-05-13 Thread ubizjak at gmail dot com


--- Comment #5 from ubizjak at gmail dot com  2009-05-13 18:16 ---
(In reply to comment #4)
 So -- invalid?

There was a reason Paolo reported this problem, so let him have the last word.


-- 


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



[Bug middle-end/39976] [4.5 Regression] Big sixtrack degradation on powerpc 32/64 after revision r146817

2009-05-13 Thread matz at gcc dot gnu dot org


--- Comment #14 from matz at gcc dot gnu dot org  2009-05-13 18:16 ---
http://gcc.gnu.org/ml/gcc-patches/2009-05/msg00753.html should fix it.


-- 


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



[Bug target/39942] Nonoptimal code - leaveq; xchg %ax,%ax; retq

2009-05-13 Thread ubizjak at gmail dot com


--- Comment #22 from ubizjak at gmail dot com  2009-05-13 18:22 ---
(In reply to comment #21)
 I guess! Your patch is absolutely correct for AMD AthlonTM 64 and AMD 
 OpteronTM
 processors, but it is nonoptimal for Intel processors. Because:

...

CCing H.J for Intel optimization issues.


-- 

ubizjak at gmail dot com changed:

   What|Removed |Added

 CC||hjl dot tools at gmail dot
   ||com


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



[Bug target/39942] Nonoptimal code - leaveq; xchg %ax,%ax; retq

2009-05-13 Thread rguenth at gcc dot gnu dot org


--- Comment #23 from rguenth at gcc dot gnu dot org  2009-05-13 18:34 
---
Note that we need something that works for the generic model as well, which in
this case looks like it is the same as for AMD models.


-- 


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



[Bug libstdc++/40133] exception propagation support not enabled in libstdc++ 4.4 on {armeabi,hppa}-linux

2009-05-13 Thread paolo dot carlini at oracle dot com


--- Comment #2 from paolo dot carlini at oracle dot com  2009-05-13 18:42 
---
To be clear, due to PR40134, the patch mentioned has been reverted for now.


-- 


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



[Bug libstdc++/40133] exception propagation support not enabled in libstdc++ 4.4 on {armeabi,hppa}-linux

2009-05-13 Thread paolo dot carlini at oracle dot com


--- Comment #3 from paolo dot carlini at oracle dot com  2009-05-13 18:42 
---
To be clear, due to PR40134, the patch mentioned has been reverted for now.


-- 

paolo dot carlini at oracle dot com changed:

   What|Removed |Added

   Severity|normal  |enhancement


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



[Bug target/39942] Nonoptimal code - leaveq; xchg %ax,%ax; retq

2009-05-13 Thread hjl dot tools at gmail dot com


--- Comment #24 from hjl dot tools at gmail dot com  2009-05-13 18:45 
---
Using padding to avoid 4 branches in 16byte chunk may not be a good idea since
it will increase code size.


-- 


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



[Bug target/37386] Interrupt service routine for arm target corrupts program counter

2009-05-13 Thread fede dot tft at hotmail dot it


--- Comment #3 from fede dot tft at hotmail dot it  2009-05-13 18:53 ---
(In reply to comment #2)
 This appears to be fixed with trunk as of r147467. Can you reproduce this with
 4.3 or 4.4 ? If not we can close this one out.

Tested with GCC 4.3.2, the bug is fixed.


-- 


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



[Bug target/39942] Nonoptimal code - leaveq; xchg %ax,%ax; retq

2009-05-13 Thread vvv at ru dot ru


--- Comment #25 from vvv at ru dot ru  2009-05-13 18:56 ---
(In reply to comment #22)
 CCing H.J for Intel optimization issues.

VVV 1. AMD limitation for 16-bytes page (memory range XXX0 - XXXF),
but
VVV Intel limitation for 16-bytes chunk  (memory range  -
+10h)

I have a doubt about this now. Sanks to Richard Guenther (Comment #20). So I am
going to make measurements for check it for Core2.


-- 


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



[Bug target/39942] Nonoptimal code - leaveq; xchg %ax,%ax; retq

2009-05-13 Thread vvv at ru dot ru


--- Comment #26 from vvv at ru dot ru  2009-05-13 19:05 ---
(In reply to comment #23)
 Note that we need something that works for the generic model as well, which in
 this case looks like it is the same as for AMD models.

There is processor property TARGET_FOUR_JUMP_LIMIT, may be create new one -
TARGET_FIVE_JUMP_LIMIT? 


-- 


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



[Bug target/39942] Nonoptimal code - leaveq; xchg %ax,%ax; retq

2009-05-13 Thread jakub at gcc dot gnu dot org


--- Comment #27 from jakub at gcc dot gnu dot org  2009-05-13 19:08 ---
If inserting the padding isn't worth it for say core2, m_CORE2 could be dropped
from X86_TUNE_FOUR_JUMP_LIMIT, but certainly it would be interesting to see
SPEC numbers backing that up.  Similarly for AMD CPUs, and if on at least one
of these it is beneficial, probably m_GENERIC should keep it, though with far
improved min_insn_size so that it doesn't trigger unnecessarily so often.

Vlad/Honza, could one of you SPEC test say current 4.4 with one (or both of):
http://gcc.gnu.org/ml/gcc-patches/2009-05/msg00702.html
http://gcc.gnu.org/ml/gcc-patches/2009-05/msg00703.html
on top of it (no need to compare clearly unneeded paddings to no paddings,
better compare only somewhat needed paddings against no paddings) compared with
X86_TUNE_FOUR_JUMP_LIMIT cleared for the used CPU?


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||vmakarov at gcc dot gnu dot
   ||org


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



[Bug target/39942] Nonoptimal code - leaveq; xchg %ax,%ax; retq

2009-05-13 Thread vvv at ru dot ru


--- Comment #28 from vvv at ru dot ru  2009-05-13 19:18 ---
(In reply to comment #24)
 Using padding to avoid 4 branches in 16byte chunk may not be a good idea since
 it will increase code size.
It's enough only one byte NOP per 16-byte chunk for padding. But, IMHO, four
branches in 16 byte chunk - is very-very infrequent. Especially for 64-bit
mode.

BTW, it's difficult to understand, what Intel mean ander term branch. Is it
CALL, JMP, conditional branches, or returns (same as AMD), or only JMP and
conditional branches. I beleave last case right.


-- 


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



[Bug fortran/31519] spurious ICE messages when module does not compile

2009-05-13 Thread fxcoudert at gcc dot gnu dot org


--- Comment #8 from fxcoudert at gcc dot gnu dot org  2009-05-13 19:37 
---
I used to see that, but now not any more. Does someone else still see this
happening? And with what testcase?


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||fxcoudert at gcc dot gnu dot
   ||org
 Status|NEW |WAITING


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



[Bug bootstrap/24382] ORIGINAL_LD_FOR_TARGET has bizarre value

2009-05-13 Thread fxcoudert at gcc dot gnu dot org


--- Comment #8 from fxcoudert at gcc dot gnu dot org  2009-05-13 19:48 
---
As far as I know, this one has disappeared a long time ago.


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||WORKSFORME


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



[Bug target/38900] ICE: unable to find a register to spill

2009-05-13 Thread fxcoudert at gcc dot gnu dot org


--- Comment #3 from fxcoudert at gcc dot gnu dot org  2009-05-13 20:04 
---
Simpler testcase, confirmed on native i386-pc-mingw32 (trunk, SVN rev. 147441):

$ cat a.c
void __attribute__((dllimport,fastcall)) h(int);

void f()
{
  h(2);
  h(1);
}

$ gcc -S -O1 a.c -foptimize-sibling-calls
a.c: In function 'f':
a.c:7: error: unable to find a register to spill in class 'CREG'
a.c:7: error: this is the insn:
(call_insn/j 10 8 11 2 a.c:6 (call (mem:QI (reg/f:SI 3 bx [58]) [0 S1 A8])
(const_int 0 [0x0])) 468 {*sibcall_1} (expr_list:REG_DEAD (reg/f:SI 3
bx [58])
(expr_list:REG_DEAD (reg:SI 2 cx)
(nil)))
(expr_list:REG_DEP_TRUE (use (reg:SI 2 cx))
(nil)))
a.c:7: internal compiler error: in spill_failure, at reload1.c:2094


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
  GCC build triplet|i686-pc-linux-gnu   |
   GCC host triplet|i686-pc-linux-gnu   |
   Last reconfirmed|-00-00 00:00:00 |2009-05-13 20:04:31
   date||


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



[Bug middle-end/39976] [4.5 Regression] Big sixtrack degradation on powerpc 32/64 after revision r146817

2009-05-13 Thread matz at gcc dot gnu dot org


--- Comment #15 from matz at gcc dot gnu dot org  2009-05-13 20:14 ---
Subject: Bug 39976

Author: matz
Date: Wed May 13 20:14:44 2009
New Revision: 147494

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=147494
Log:
PR middle-end/39976
* tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
(trivially_conflicts_p): New function.
(insert_backedge_copies): Use it.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-outof-ssa.c


-- 


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



[Bug target/34625] msgl-check.c:199: error: unrecognizable insn:

2009-05-13 Thread fxcoudert at gcc dot gnu dot org


--- Comment #10 from fxcoudert at gcc dot gnu dot org  2009-05-13 20:24 
---
Fixed, at least for current trunk.


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.5.0


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



[Bug middle-end/40135] New: using alias-set zero for union accesses necessary because of RTL alias oracle

2009-05-13 Thread rguenth at gcc dot gnu dot org
The RTL alias oracle does defer to TBAA even for the case of disambiguating
two accesses based on decls.  This makes

  /* Permit type-punning when accessing a union, provided the access
 is directly through the union.  For example, this code does not
 permit taking the address of a union member and then storing
 through it.  Even the type-punning allowed here is a GCC
 extension, albeit a common and useful one; the C standard says
 that such accesses have implementation-defined behavior.  */
  for (u = t;
   TREE_CODE (u) == COMPONENT_REF || TREE_CODE (u) == ARRAY_REF;
   u = TREE_OPERAND (u, 0))
if (TREE_CODE (u) == COMPONENT_REF
 TREE_CODE (TREE_TYPE (TREE_OPERAND (u, 0))) == UNION_TYPE)
  return 0;

in c-common.c necessary which needlessly pessimizes TBAA in the face
of union accesses.


-- 
   Summary: using alias-set zero for union accesses necessary
because of RTL alias oracle
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Keywords: missed-optimization, alias
  Severity: enhancement
  Priority: P3
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rguenth at gcc dot gnu dot org


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



[Bug middle-end/40135] using alias-set zero for union accesses necessary because of RTL alias oracle

2009-05-13 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2009-05-13 20:31 ---
The tree alias oracle gets this right.


-- 


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



[Bug middle-end/39986] decimal float constant is incorrect when cc1 is a 64-bit binary

2009-05-13 Thread pinskia at gcc dot gnu dot org


--- Comment #10 from pinskia at gcc dot gnu dot org  2009-05-13 20:46 
---
Fixed.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution||FIXED


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



[Bug middle-end/40035] ICE when cross-compiling with -Os

2009-05-13 Thread bje at gcc dot gnu dot org


--- Comment #2 from bje at gcc dot gnu dot org  2009-05-13 20:52 ---
Subject: Bug 40035

Author: bje
Date: Wed May 13 20:52:00 2009
New Revision: 147498

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=147498
Log:
PR middle-end/40035
* dse.c (check_mem_read_rtx): Guard against width == -1.
testsuite/
* gcc.c-torture/compile/pr40035.c: New test.

Added:
trunk/gcc/testsuite/gcc.c-torture/compile/pr40035.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/dse.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug middle-end/40035] ICE when cross-compiling with -Os

2009-05-13 Thread bje at gcc dot gnu dot org


--- Comment #3 from bje at gcc dot gnu dot org  2009-05-13 20:56 ---
Fixed.


-- 

bje at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.4.1


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



[Bug middle-end/40035] ICE when cross-compiling with -Os

2009-05-13 Thread bje at gcc dot gnu dot org


--- Comment #4 from bje at gcc dot gnu dot org  2009-05-13 21:42 ---
Subject: Bug 40035

Author: bje
Date: Wed May 13 21:42:03 2009
New Revision: 147501

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=147501
Log:
Backport from mainline:

PR middle-end/40035
* dse.c (check_mem_read_rtx): Guard against width == -1.
testsuite/
* gcc.c-torture/compile/pr40035.c: New test.

Added:
branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr40035.c
Modified:
branches/gcc-4_4-branch/gcc/ChangeLog
branches/gcc-4_4-branch/gcc/dse.c
branches/gcc-4_4-branch/gcc/testsuite/ChangeLog


-- 


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



[Bug target/39942] Nonoptimal code - leaveq; xchg %ax,%ax; retq

2009-05-13 Thread hjl dot tools at gmail dot com


--- Comment #29 from hjl dot tools at gmail dot com  2009-05-13 21:44 
---
Created an attachment (id=17858)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17858action=view)
Impact of X86_TUNE_FOUR_JUMP_LIMIT on SPEC CPU 2K

This is my old data of X86_TUNE_FOUR_JUMP_LIMIT on Penryn and Nehalem.


-- 


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



[Bug c++/40007] [4.5 regression] specialization causes access problem in primary template

2009-05-13 Thread dodji at gcc dot gnu dot org


-- 

dodji at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |dodji at gcc dot gnu dot org
   |dot org |
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-05-13 21:53:27
   date||


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



[Bug target/34341] GCC generates incorrect code on ARM in certain case, resulting in stack corruption

2009-05-13 Thread awalbran at innaworks dot com


--- Comment #2 from awalbran at innaworks dot com  2009-05-13 21:27 ---
Yes, I agree that the testcase does not make much sense, it is just the
smallest testcase that I could find which demonstrates the bug. It is fine that
the return value is undefined; the problem is that the stack pointer gets
corrupted, which should never happen no matter what the function happens to do.

However, if I remember correctly this bug no longer occurs in a more recent
version of GCC, so I guess this report is mostly just useful for regression
testing now.


-- 


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



[Bug preprocessor/36674] #include location is offset by one row in errors from preprocessed files

2009-05-13 Thread manu at gcc dot gnu dot org


--- Comment #2 from manu at gcc dot gnu dot org  2009-05-13 23:18 ---
Subject: Bug 36674

Author: manu
Date: Wed May 13 23:17:55 2009
New Revision: 147504

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=147504
Log:
2009-05-14  Manuel Lopez-Ibanez  m...@gcc.gnu.org

PR cpp/36674
libcpp/
* directives (do_linemarker): Compensate for the increment in
location that occurs when we reach the end of line.
* files (_cpp_stack_include): Mention _cpp_find_file in the
comment.
testsuite/
* gcc.dg/cpp/pr36674.i: New.

Added:
trunk/gcc/testsuite/gcc.dg/cpp/pr36674.i
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/libcpp/ChangeLog
trunk/libcpp/directives.c
trunk/libcpp/files.c


-- 


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



[Bug preprocessor/36674] #include location is offset by one row in errors from preprocessed files

2009-05-13 Thread manu at gcc dot gnu dot org


--- Comment #3 from manu at gcc dot gnu dot org  2009-05-13 23:19 ---
FIXED in GCC 4.5


-- 

manu at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug c/40136] New: Initializing a union whose first member is an anonymous struct

2009-05-13 Thread markleone at gmail dot com
Not sure if this is a bug or a standards interpretation issue.  Consider the
following union, whose first member is an anonymous struct:

union Foo {
struct { float a,b,c; };
const char* x;
};

icc (10.1) permits initialization of the first member of the union:

Foo foo = { .0f, .0f, .0f };

gcc (4.0.1) doesn't permit that, but does permit the following, which I believe
should not be accepted:

Foo foo = { foo };


-- 
   Summary: Initializing a union whose first member is an anonymous
struct
   Product: gcc
   Version: 4.0.1
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: markleone at gmail dot com
  GCC host triplet: i686-apple-darwin9-gcc-4.0.1


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



[Bug c++/40137] New: Segmentation fault compiling simple c++ code

2009-05-13 Thread piccinini dot santiago at gmail dot com
san ~  $   g++ -v -save-temps gcc4.4.0_segfaults.cpp 
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../configure --prefix=/usr --enable-shared
--enable-languages=c,c++,fortran,objc,obj-c++ --enable-threads=posix
--mandir=/usr/share/man --infodir=/usr/share/info --enable-__cxa_atexit
--disable-multilib --libdir=/usr/lib --libexecdir=/usr/lib --enable-clocale=gnu
--disable-libstdcxx-pch --with-tune=generic
Thread model: posix
gcc version 4.4.0 (GCC) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic'
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.0/cc1plus -E -quiet -v -D_GNU_SOURCE
gcc4.4.0_segfaults.cpp -mtune=generic -fpch-preprocess -o gcc4.4.0_segfaults.ii
ignoring nonexistent directory
/usr/lib/gcc/i686-pc-linux-gnu/4.4.0/../../../../i686-pc-linux-gnu/include
#include ... search starts here:
#include ... search starts here:
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.0/../../../../include/c++/4.4.0

/usr/lib/gcc/i686-pc-linux-gnu/4.4.0/../../../../include/c++/4.4.0/i686-pc-linux-gnu
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.0/../../../../include/c++/4.4.0/backward
 /usr/local/include
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.0/include
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.0/include-fixed
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic'
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.0/cc1plus -fpreprocessed
gcc4.4.0_segfaults.ii -quiet -dumpbase gcc4.4.0_segfaults.cpp -mtune=generic
-auxbase gcc4.4.0_segfaults -version -o gcc4.4.0_segfaults.s
GNU C++ (GCC) version 4.4.0 (i686-pc-linux-gnu)
compiled by GNU C version 4.4.0, GMP version 4.2.4, MPFR version 2.4.1.
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129315
Compiler executable checksum: 9eeca1d61ee5f7a810fd0c50c7c0ab78
gcc4.4.0_segfaults.cpp: In member function ‘void FooT::foo() [with T = int]’:
gcc4.4.0_segfaults.cpp:33:   instantiated from here
gcc4.4.0_segfaults.cpp:26: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.


-- 
   Summary: Segmentation fault compiling simple  c++ code
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: piccinini dot santiago at gmail dot com
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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



[Bug target/38703] testsuite __gnu_mcount_nc link error when profiling on arm

2009-05-13 Thread ramana at gcc dot gnu dot org


--- Comment #7 from ramana at gcc dot gnu dot org  2009-05-13 23:56 ---
Marking as WONTFIX as per comment#1 above.


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||WONTFIX


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



[Bug c++/40137] Segmentation fault compiling simple c++ code

2009-05-13 Thread piccinini dot santiago at gmail dot com


--- Comment #1 from piccinini dot santiago at gmail dot com  2009-05-13 
23:56 ---
Created an attachment (id=17859)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17859action=view)
preprocessed file


-- 


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



[Bug fortran/39865] ICE in gfc_conv_scalarized_array_ref

2009-05-13 Thread jakub at gcc dot gnu dot org


--- Comment #12 from jakub at gcc dot gnu dot org  2009-05-14 00:00 ---
Subject: Bug 39865

Author: jakub
Date: Thu May 14 00:00:27 2009
New Revision: 147507

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=147507
Log:
PR fortran/39865
* io.c (resolve_tag_format): CHARACTER array in FMT= argument
isn't an extension.  Reject non-CHARACTER array element of
assumed shape or pointer or assumed size array.
* trans-array.c (array_parameter_size): New function.
(gfc_conv_array_parameter): Add size argument.  Call
array_parameter_size if it is non-NULL.
* trans-array.h (gfc_conv_array_parameter): Adjust prototype.
* trans-expr.c (gfc_conv_function_call, gfc_trans_arrayfunc_assign):
Adjust callers.
* trans-intrinsic.c (gfc_conv_intrinsic_loc): Likewise.
* trans-io.c (gfc_convert_array_to_string): Rewritten.

* gfortran.dg/pr39865.f90: New test.
* gfortran.dg/hollerith.f90: Don't expect errors for CHARACTER
arrays in FMT=.
* gfortran.dg/hollerith_f95.f90: Likewise.
* gfortran.dg/hollerith6.f90: New test.
* gfortran.dg/hollerith7.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/hollerith6.f90
trunk/gcc/testsuite/gfortran.dg/hollerith7.f90
trunk/gcc/testsuite/gfortran.dg/pr39865.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/io.c
trunk/gcc/fortran/trans-array.c
trunk/gcc/fortran/trans-array.h
trunk/gcc/fortran/trans-expr.c
trunk/gcc/fortran/trans-intrinsic.c
trunk/gcc/fortran/trans-io.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gfortran.dg/hollerith.f90
trunk/gcc/testsuite/gfortran.dg/hollerith_f95.f90


-- 


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



[Bug target/40105] SH: 4.3/4.4 compilers segfault when recompiling itself on gentoo system

2009-05-13 Thread kkojima at gcc dot gnu dot org


--- Comment #5 from kkojima at gcc dot gnu dot org  2009-05-14 00:12 ---
Created an attachment (id=17860)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17860action=view)
A patch

A binary search on trunk shows me that the patch in r146829 and
its follow-up r146988 fix the issue.
See http://gcc.gnu.org/ml/gcc-patches/2009-04/msg02097.html for
r146829 changes.
With these patches, 4.3 compiler emits bf .L5 instead of bf/s .L5
even with -O1.  So it seems that this is an rtl-optimization issue
which is fixed on trunk recently.
I'm not sure about the backport to the release branches because
that patch is originally for PR 34415 which was also a mips 4.3
regression and solved only on the trunk (4.4 at that moment).
I've attached an r146829+r146988 patch tuned for gcc-4_3-branch.
Could you try it?


-- 


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



[Bug rtl-optimization/40086] [4.5 Regression]: cris-elf gfortran.dg/forall_1.f90 -O1 execution

2009-05-13 Thread hp at gcc dot gnu dot org


--- Comment #13 from hp at gcc dot gnu dot org  2009-05-14 00:12 ---
By chance I stumbled upon an old fix I did some years ago in which I changed a
use of next_active_insn to next_real insn (to avoid skipping USE insns).  You
can see it in comments referring to a now-deleted main use (the references
gone stale).  This PR is just the same bug in another place! I think I'll be
going for the same solution; it will reduce the number of filled delay-slots or
redirected jumps and removed redundant insns, but presumably safer as it will
not include moving or duplicating the USE insns.  It would also be solved by a
reorg rewrite, in which USE insns wouldn't be sprinkled into the insn stream,
sometimes ignored, sometimes incorrectly...


-- 


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



[Bug c++/40137] Segmentation fault compiling simple c++ code

2009-05-13 Thread hjl dot tools at gmail dot com


--- Comment #2 from hjl dot tools at gmail dot com  2009-05-14 00:35 ---


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


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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



[Bug c++/40013] [4.4/4.5 Regression] ICE when creating a local array with size from the return value of a member function of an object in a nested class in a template class

2009-05-13 Thread hjl dot tools at gmail dot com


--- Comment #5 from hjl dot tools at gmail dot com  2009-05-14 00:35 ---
*** Bug 40137 has been marked as a duplicate of this bug. ***


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

 CC||piccinini dot santiago at
   ||gmail dot com


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



[Bug c/40136] Initializing a union whose first member is an anonymous struct

2009-05-13 Thread hjl dot tools at gmail dot com


--- Comment #1 from hjl dot tools at gmail dot com  2009-05-14 00:42 ---
4.0 branch is closed. Gcc 4.1.2 gave

[...@gnu-3 tmp]$ cat u.cc
union Foo {
struct { float a,b,c; };
const char* x;
};

Foo foo = { .0f, .0f, .0f };
Foo foo1 = { foo };
[...@gnu-3 tmp]$ gcc -c u.cc
u.cc:7: error: cannot convert ‘const char*’ to ‘float’ in initialization
[...@gnu-3 tmp]$ 


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||WONTFIX


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



[Bug c/40065] spurious format string warnings

2009-05-13 Thread bje at gcc dot gnu dot org


--- Comment #4 from bje at gcc dot gnu dot org  2009-05-14 01:01 ---
Andrew wrote:

  GCC can assume %qE means anything from just printing E in quotes

Can you explain this?  Is it really the case that the format specifier can have
an optional argument?


-- 


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



[Bug rtl-optimization/40086] [4.5 Regression]: cris-elf gfortran.dg/forall_1.f90 -O1 execution

2009-05-13 Thread hp at gcc dot gnu dot org


--- Comment #14 from hp at gcc dot gnu dot org  2009-05-14 01:18 ---
Created an attachment (id=17861)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17861action=view)
patch for just the bug at hand.

This patch just changes the next_active_insn for the exposure in this PR.
I think most uses of next_active_insn in reorg.c and resource.c should be
changed to next_real_insn.  Or reorg.c rewritten, at least to not use in-stream
liveness markers like those USE insns.


-- 


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



[Bug middle-end/39301] ICE in register_overhead, at bitmap.c:115

2009-05-13 Thread bje at gcc dot gnu dot org


--- Comment #7 from bje at gcc dot gnu dot org  2009-05-14 01:31 ---
The test case does not run in a GB of RAM on my x86-64 system.  It sends the
system deep into swap until the out-of-memory manager kicks in.


-- 


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



[Bug target/40129] M16C invalid shift count used by pack_d - ashldi3

2009-05-13 Thread dj at redhat dot com


--- Comment #1 from dj at redhat dot com  2009-05-14 02:52 ---
Do you have a test case that shows an actual problem?  Because the m32c port
has special code that tests for shift counts outside -16..16 and pre-shifts the
value to make the shift count fit (see gcc/config/m32c/m32c.c
m32c_prepare_shift()).


-- 

dj at redhat dot com changed:

   What|Removed |Added

 CC||dj at redhat dot com


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



[Bug libstdc++/19495] basic_string::_M_rep() can produce an unnaturally aligned pointer to _Rep

2009-05-13 Thread bje at gcc dot gnu dot org


--- Comment #26 from bje at gcc dot gnu dot org  2009-05-14 02:54 ---
This test now passes on powerpc*-linux-gnu.


-- 

bje at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|SUSPENDED   |RESOLVED
 Resolution||FIXED


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



  1   2   >