[Bug middle-end/52078] Bogus may be used uninitialized warning

2012-02-01 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52078

Manuel López-Ibáñez  changed:

   What|Removed |Added

 CC||manu at gcc dot gnu.org

--- Comment #1 from Manuel López-Ibáñez  2012-02-01 
08:17:27 UTC ---
I haven't followed development for a while, but I don't think GCC uninit
analysis is powerful enough to detect this or even simpler cases like PR36550
and PR20968.


[Bug fortran/52059] [4.7 Regression] ICE in gfc_conv_variable

2012-02-01 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52059

--- Comment #5 from Tobias Burnus  2012-02-01 
08:34:32 UTC ---
Submitted patch:
  http://gcc.gnu.org/ml/fortran/2012-01/msg00276.html


[Bug middle-end/52074] ICE: RTL flag check: MEM_VOLATILE_P used with unexpected rtx code 'plus' in extract_fixed_bit_field, at expmed.c:1734

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52074

--- Comment #1 from Richard Guenther  2012-02-01 
09:22:39 UTC ---
I suppose you can provide at least a backtrace and some debug_rtx output?


[Bug tree-optimization/52070] missing integer comparison optimization

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52070

Richard Guenther  changed:

   What|Removed |Added

   Severity|normal  |enhancement


[Bug middle-end/52078] Bogus may be used uninitialized warning

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52078

Richard Guenther  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-02-01
 Blocks||24639
 Ever Confirmed|0   |1

--- Comment #2 from Richard Guenther  2012-02-01 
09:28:49 UTC ---
Yeah, it's simply too confusing code for GCCs static analysis.  Thus the "may
be used uninitialized".


[Bug target/52076] bloated code for setting single bits in bitfields on m68k

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52076

Richard Guenther  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-02-01
 Ever Confirmed|0   |1
   Severity|normal  |enhancement


[Bug tree-optimization/52073] [4.7 Regression] ICE: vector VEC(vec_void_p,base) index domain error, in vinfo_for_stmt at tree-vectorizer.h:620

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52073

--- Comment #3 from Jakub Jelinek  2012-02-01 
09:43:07 UTC ---
Created attachment 26538
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26538
gcc47-pr52073.patch

Thanks for the report.  Untested fix.


[Bug tree-optimization/52073] [4.7 Regression] ICE: vector VEC(vec_void_p,base) index domain error, in vinfo_for_stmt at tree-vectorizer.h:620

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52073

Jakub Jelinek  changed:

   What|Removed |Added

 CC||irar at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek  2012-02-01 
09:45:18 UTC ---
Ira, does this look reasonable?  We give up later on because we don't handle
such reductions, but for the test "is this pattern result used by some other
pattern stmt" I think it is correct to ignore uses outside of the loop.


[Bug target/52080] New: Stores to bitfields introduce a store-data-race on adjacent data

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52080

 Bug #: 52080
   Summary: Stores to bitfields introduce a store-data-race on
adjacent data
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: rgue...@gcc.gnu.org
Target: ia64-*-linux


For the following testcase we generate a 8 byte RMW cycle on IA64 which
causes locking problems in the linux kernel btrfs filesystem.

struct x {
long a;
unsigned int lock;
unsigned int full : 1;
};

void
wrong(struct x *ptr)
{
  ptr->full = 1;
}


[Bug c++/17729] [4.4/4.5/4.6/4.7 Regression] Duplicate __attribute__((deprecated)) warning

2012-02-01 Thread iains at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17729

Iain Sandoe  changed:

   What|Removed |Added

  Attachment #20407|0   |1
is obsolete||

--- Comment #24 from Iain Sandoe  2012-02-01 10:18:58 
UTC ---
Created attachment 26539
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26539
rebased patch

This rebased to r183760.

Hm.  What pr50308 shows is that it's not just about eliminating a duplicate
messages, but also about where the test is done.  I.E. late enough in the
proceedings that overloading and ADL are accounted.

Perhaps this patch could be re-considered on that basis (IIUC, Jason's proposed
amendment was to replace this change with a hash table recording the fact that
we had already emitted a warning and thus suppressing subsequent ones) 
[see the thread referred above for details].

Clearly just recording the fact we've emitted a warning doesn't help if that
warning should not have been emitted in the first place.

This patch does NOT fix PR50308 (so, there is either another problem or we are
still not making the test in the right place).

The patch still fixes the current PR (17729).  It might be that it can be
amended to deal with PR50308 as well - don't have any time available right now
to look.

Otherwise, I don't think I know the c++ FE well enough to suggest a better
place to put the test.


[Bug target/52080] Stores to bitfields introduce a store-data-race on adjacent data

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52080

Richard Guenther  changed:

   What|Removed |Added

 Target|ia64-*-linux|ia64-*-linux,
   ||sparc64-*-linux
 CC||ebotcazou at gcc dot
   ||gnu.org

--- Comment #1 from Richard Guenther  2012-02-01 
10:22:51 UTC ---
SPARC64 is also affected.

;; ptr_1(D)->full = 1;

(insn 6 5 7 (set (reg:DI 110)
(mem/j:DI (plus:DI (reg/v/f:DI 109 [ ptr ])
(const_int 8 [0x8])) [0+8 S8 A64])) t.c:10 -1
 (nil))

(insn 7 6 8 (set (reg:DI 112)
(const_int 2147483648 [0x8000])) t.c:10 -1
 (nil))

(insn 8 7 9 (set (reg:DI 111)
(ior:DI (reg:DI 110)
(reg:DI 112))) t.c:10 -1
 (nil))

(insn 9 8 0 (set (mem/j:DI (plus:DI (reg/v/f:DI 109 [ ptr ])
(const_int 8 [0x8])) [0+8 S8 A64])
(reg:DI 111)) t.c:10 -1
 (nil))


wrong:
ldx [%o0+8], %g2
sethi   %hi(2147483648), %g1
or  %g2, %g1, %g1
jmp %o7+8
 stx%g1, [%o0+8]


At least IA64 also can do 4-byte loads/stores (but not sure the HW
wouldn't re-introduce the data race).


[Bug libstdc++/51296] Several 30_threads tests FAIL on Tru64 UNIX

2012-02-01 Thread ro at CeBiTec dot Uni-Bielefeld.DE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51296

--- Comment #30 from ro at CeBiTec dot Uni-Bielefeld.DE  2012-02-01 10:23:33 UTC ---
> --- Comment #29 from Jonathan Wakely  2012-01-31 
> 19:09:00 UTC ---
> (N.B. that ChangeLog entry cited the wrong PR)

I know, I've already corrected the ChangeLog.

> The wording quoted in comment 25 is a POSIX defect:
> http://austingroupbugs.net/view.php?id=70#c127

Ok.  Unfortunately this doesn't help for Tru64 UNIX, which won't change
at this point.  I wonder if we could use pthread_mutex_init() only for
the threads support instead of globally?

Otherwise, we should probably disable it on osf instead of leaving it
broken.

Rainer


[Bug tree-optimization/52081] New: Missed tail merging with pure calls

2012-02-01 Thread vries at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52081

 Bug #: 52081
   Summary: Missed tail merging with pure calls
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: vr...@gcc.gnu.org


pr51879-12.c:
...
__attribute__((pure)) int bar (int);
__attribute__((pure)) int bar2 (int);
void baz (int);

int x, z;

void
foo (int y)
{
  int a = 0;
  if (y == 6)
{
  a += bar (7);
  a += bar2 (6);
}
  else
{
  a += bar2 (6);
  a += bar (7);
}
  baz (a);
}
...

When compiling at -O2, pr51879-12.c.094t.pre looks like this:
...
  # BLOCK 3 freq:1991
  # PRED: 2 [19.9%]  (true,exec)
  # VUSE <.MEMD.1722_12(D)>
  # USE = nonlocal escaped 
  D.1717_4 = barD.1703 (7);
  # VUSE <.MEMD.1722_12(D)>
  # USE = nonlocal escaped 
  D.1718_6 = bar2D.1705 (6);
  aD.1713_7 = D.1717_4 + D.1718_6;
  goto ;
  # SUCC: 5 [100.0%]  (fallthru,exec)

  # BLOCK 4 freq:8009
  # PRED: 2 [80.1%]  (false,exec)
  # VUSE <.MEMD.1722_12(D)>
  # USE = nonlocal escaped 
  D.1720_8 = bar2D.1705 (6);
  # VUSE <.MEMD.1722_12(D)>
  # USE = nonlocal escaped 
  D.1721_10 = barD.1703 (7);
  aD.1713_11 = D.1720_8 + D.1721_10;
  # SUCC: 5 [100.0%]  (fallthru,exec)

  # BLOCK 5 freq:1
  # PRED: 3 [100.0%]  (fallthru,exec) 4 [100.0%]  (fallthru,exec)
  # aD.1713_1 = PHI 
  # .MEMD.1722_13 = VDEF <.MEMD.1722_12(D)>
  # USE = nonlocal 
  # CLB = nonlocal 
  bazD.1707 (aD.1713_1);
  # VUSE <.MEMD.1722_13>
  return;
...

Value numbering numbers the two phi arguments a_7 and a_11 the same so the
problem is not in value numbering:
...
Setting value number of a_11 to a_7 (changed)
...


[Bug target/52080] Stores to bitfields introduce a store-data-race on adjacent data

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52080

--- Comment #2 from Richard Guenther  2012-02-01 
10:25:21 UTC ---
SPARC64 also can do 32bit loads/stores as the following testcase shows:

struct x {
long a;
unsigned int lock;
unsigned int full;
};

void
wrong(struct x *ptr)
{
  ptr->full = 1;
}

here we simply use a 32bit store.


[Bug tree-optimization/52081] Missed tail merging with pure calls

2012-02-01 Thread vries at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52081

--- Comment #1 from vries at gcc dot gnu.org 2012-02-01 10:27:01 UTC ---
Created attachment 26540
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26540
tentative patch


[Bug middle-end/52082] New: Memory loads not rematerialized

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52082

 Bug #: 52082
   Summary: Memory loads not rematerialized
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Keywords: missed-optimization, ra
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: ja...@gcc.gnu.org
CC: vmaka...@gcc.gnu.org
Target: x86_64-linux


On the following testcase at -O2 (distilled from genautomata.c):

struct S { unsigned long *s1; struct S *s2; };
int v1 __attribute__((visibility ("hidden")));
struct T
{
  int a, b, c;
} *v2 __attribute__((visibility ("hidden")));
struct S **v3 __attribute__((visibility ("hidden")));
struct S **v4 __attribute__((visibility ("hidden")));

int __attribute__((noinline, noclone))
foo (unsigned long *x, unsigned long *y, int z)
{
  int j, k, l;
  unsigned int i;
  struct S *m;

  for (j = 0; j < v1; j++)
if (y[j])
  for (i = 0; i < 8 * sizeof (unsigned long); i++)
  if ((y[j] >> i) & 1)
{
  k = j * 8 * sizeof (unsigned long) + i;
  if (k >= v2->c)
break;
  for (m = (z ? v4 [k] : v3 [k]); m != ((void *)0); m = m->s2)
{
  for (l = 0; l < v1; l++)
if ((x [l] & m->s1 [l]) != m->s1 [l] && m->s1 [l])
  break;
  if (l >= v1)
return 0;
}
}
  return 1;
}

tree LIM moves the loads from v2/v3/v4 before the loop, but unfortunately the
register pressure is high and the pseudos holding the v3/v4 pointers don't get
a a hard register and are immediately spilled to the stack.  I wonder whether
we couldn't instead just rematerialize them and put the original MEM loads into
the loop (assuming they don't alias with anything on the way, but that must be
the case here when LIM moved them there first, after all this loop doesn't have
any MEM stores at all).


[Bug target/52080] Stores to bitfields introduce a store-data-race on adjacent data

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52080

Richard Guenther  changed:

   What|Removed |Added

 Depends on||48124

--- Comment #3 from Richard Guenther  2012-02-01 
10:38:58 UTC ---
For SPARC64 optimize_bitfield_assignment_op fails so we fall into the
store_field path with mode1 == VOIDmode (what get_inner_refrence says).
to_rtx is

(mem/j:BLK (reg/v/f:DI 109 [ ptr ]) [2 *ptr_1(D)+0 S1 A64])

Related bug: PR48124.


[Bug tree-optimization/52073] [4.7 Regression] ICE: vector VEC(vec_void_p,base) index domain error, in vinfo_for_stmt at tree-vectorizer.h:620

2012-02-01 Thread irar at il dot ibm.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52073

Ira Rosen  changed:

   What|Removed |Added

 CC||irar at il dot ibm.com

--- Comment #5 from Ira Rosen  2012-02-01 10:42:42 UTC 
---
Yes, looks fine to me.


[Bug libgcj/51500] [4.7 regression] 106 unexpected libjava testsuite failures with mingw32

2012-02-01 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51500

--- Comment #19 from Kai Tietz  2012-02-01 10:46:40 
UTC ---
Author: ktietz
Date: Wed Feb  1 10:46:36 2012
New Revision: 183794

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183794
Log:
PR target/51500
* interpret.cc (_Jv_init_cif): Handle thiscall
convention for 32-bit Windows.
* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA):
Likewise.
* java/lang/reflect/natVMProxy.cc (invoke_t): Add
thiscall-attribute for 32-bit Windows.


Modified:
trunk/libjava/ChangeLog
trunk/libjava/interpret.cc
trunk/libjava/java/lang/reflect/natMethod.cc
trunk/libjava/java/lang/reflect/natVMProxy.cc


[Bug c++/52069] ARM: initialization of static member in template struct

2012-02-01 Thread thomas.bet...@rohde-schwarz.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52069

--- Comment #8 from Thomas Betker  2012-02-01 
10:51:58 UTC ---
> There's a reason the standard says "no diagnostic required."
> 
> When compiling libtmpl.so, how is the compiler supposed to know that a
> different translation unit which it can't see (and which might not even have
> been written yet) will implicitly instantiate the member?  When compiling
> main.o, how is the compiler supposed to know that an explicit specialization
> exists in a separate translation unit which it can't see?

Okay. So if I read the quote correctly, the standard does not require explicit
specialization, it just requires that an explicit specialization, if present,
is declared before any implicit instantiation. This explains why no there is no
warning if the explicit specialization is missing.

However, this also means that the test case does not violate the quoted rule
because there is simply no explicit specialization at all. I am quite willing
to believe that it is ill-formed, but the reason lies probably in the rules for
implicit specialization; I will have to read up on this.

> With optimisation enabled the compilation of main.o probably removes condition
> because the constant is known to be zero because there has been no explicit
> specialization declared. Without optimisation a weak symbol is emitted, which
> may or may not be replaced by the weak symbol in libtmpl.so that has a
> different value.

objdump says that the symbol S::id both in testbug and in libtmpl.so (with
and without optimization) is a global, strong object in .bss; the symbol
(exists and) is undefined in main.o. 

Without optimization, S::id is initialized in libtmpl.so by
__static_initialization_and_destruction_0(int, int) [which is called by
'::id']. When run on the target, the function
is relocated to point to the object in testbug (i did a disassembly in gdb). So
in some sense, it S::id in libtmpl.so is indeed treated as a weak object.

With optimization, S::id is initialized in libtmpl.so directly by 'global
constructors keyed to S::id'. When run on the target, the function still
points to the object in libtmpl.so, which no longer seems to be weak. 

I am afraid that this inconsistency still bothers me, apart from the fact that
I couldn't reproduce the problem for x86.

When the explicit specialization is added in tmpl.h, or just in tmpl.cpp, the
symbol S::id both in testbug and in libtmpl.so (with optimization) is a
global, weak object in .bss.


[Bug libstdc++/51296] Several 30_threads tests FAIL on Tru64 UNIX

2012-02-01 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51296

Jonathan Wakely  changed:

   What|Removed |Added

   Target Milestone|--- |4.7.0

--- Comment #31 from Jonathan Wakely  2012-02-01 
10:58:32 UTC ---
(In reply to comment #30)
> I wonder if we could use pthread_mutex_init() only for
> the threads support instead of globally?

I'll add some extra preprocessor conditions around the mutex init code, so that
os_defines.h can force std::mutex to use the init function even if the INIT
macro is defined by gthr-posix.h

That should also help for PR 51906


[Bug libstdc++/51906] thread lock test failures on darwin11 under Xcode 4.2

2012-02-01 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51906

Jonathan Wakely  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-02-01
 AssignedTo|unassigned at gcc dot   |redi at gcc dot gnu.org
   |gnu.org |
   Target Milestone|--- |4.7.0
 Ever Confirmed|0   |1

--- Comment #35 from Jonathan Wakely  2012-02-01 
11:01:12 UTC ---
(In reply to comment #34)
> A recursive mutex using pthread_mutex_init() works.

Thanks for the analysis.

I'm going to add some extra preprocessor conditions around the __mutex_base and
__recursive_mutex_base initialization so that target maintainers can force use
of the pthread_mutex_init function on an OS-by-OS basis.  That should allow
this issue to be fixed for Lion and PR 51296 to be fixed for Tru64.


[Bug libstdc++/51795] linear_congruential_engine doesn't work correctly

2012-02-01 Thread paolo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51795

--- Comment #29 from paolo at gcc dot gnu.org  
2012-02-01 11:10:35 UTC ---
Author: paolo
Date: Wed Feb  1 11:10:30 2012
New Revision: 183795

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183795
Log:
2012-02-01  Paolo Carlini  

PR libstdc++/51795
* include/bits/random.h (linear_congruential_generator): Add
static_assert preventing instantiation for values of 'a' and 'm'
currently handled incorrectly but _Mod::__calc.
* include/bits/random.tcc (seed_seq::generate): Avoid unsafe
uses of _Mod::__calc.

Modified:
branches/gcc-4_6-branch/libstdc++-v3/ChangeLog
branches/gcc-4_6-branch/libstdc++-v3/include/bits/random.h
branches/gcc-4_6-branch/libstdc++-v3/include/bits/random.tcc


[Bug target/52080] Stores to bitfields introduce a store-data-race on adjacent data

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52080

--- Comment #4 from Richard Guenther  2012-02-01 
11:12:41 UTC ---
Btw,

  offset = bitnum / unit;
  bitpos = bitnum % unit;
  byte_offset = (bitnum % BITS_PER_WORD) / BITS_PER_UNIT
+ (offset * UNITS_PER_WORD);

byte_offset is bollocks (or has a really poor name).  On SPARC64 I see

(gdb) p unit
$11 = 8
(gdb) p offset
$12 = 12
(gdb) p bitpos
$13 = 0
(gdb) p byte_offset
$14 = 100

Other than that we are falling into the generic store_fixed_bit_field
routine which at the top does

  unsigned int total_bits = BITS_PER_WORD;

and

  mode = GET_MODE (op0);
  if (GET_MODE_BITSIZE (mode) == 0
  || GET_MODE_BITSIZE (mode) > GET_MODE_BITSIZE (word_mode))
mode = word_mode;

(now, why we use a BLKmode mem here and not a QImode mem may be
surprising)

get_best_mode still returns DImode because that's the largest mode
the given alignment supports.  After that we're lost.  So it seems
that to fix this case we'd need to figure out some other largest
mode we can pass to get_best_mode.  The only hint would be from
providing a different mode for the initial MEM we create, like with

Index: gcc/expr.c
===
--- gcc/expr.c  (revision 183791)
+++ gcc/expr.c  (working copy)
@@ -4705,6 +4705,12 @@ expand_assignment (tree to, tree from, b
to_rtx = adjust_address (to_rtx, mode1, 0);
  else if (GET_MODE (to_rtx) == VOIDmode)
to_rtx = adjust_address (to_rtx, BLKmode, 0);
+ else if (TREE_CODE (to) == COMPONENT_REF
+  && DECL_BIT_FIELD (TREE_OPERAND (to, 1))
+  && DECL_MODE (TREE_OPERAND (to, 1)) != BLKmode)
+   to_rtx = adjust_address (to_rtx,
+TYPE_MODE (DECL_BIT_FIELD_TYPE
+   (TREE_OPERAND (to, 1))), 0);
}

   if (offset != 0)

That avoids the use of QImode we have on the field-decl but also
adjusts MEM_SIZE ...


[Bug target/52076] bloated code for setting single bits in bitfields on m68k

2012-02-01 Thread sch...@linux-m68k.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52076

--- Comment #1 from Andreas Schwab  2012-02-01 11:15:57 
UTC ---
gcc 4.1 and before generate or.b #-128,(%a0) instead of bfins.  As a
consequence of this they also generate moveq.l #4,%d0 instead of move.b, but
never shorten the write.


[Bug tree-optimization/51879] Missed tail merging with non-const/pure calls

2012-02-01 Thread vries at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51879

--- Comment #8 from vries at gcc dot gnu.org 2012-02-01 11:20:31 UTC ---
submitted patch: http://gcc.gnu.org/ml/gcc-patches/2012-01/msg01513.html


[Bug rtl-optimization/51374] [avr] insn combine reorders volatile memory accesses

2012-02-01 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51374

--- Comment #9 from Georg-Johann Lay  2012-02-01 
11:35:37 UTC ---
Author: gjl
Date: Wed Feb  1 11:35:34 2012
New Revision: 183796

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183796
Log:
gcc/
PR rtl-optimization/51374
* combine.c (can_combine_p): Don't allow volatile_refs_p insns
to cross other volatile_refs_p insns.

gcc/testsuite/
PR rtl-optimization/51374
* testsuite/gcc.target/avr/torture/pr51374-1.c: New.


Added:
trunk/gcc/testsuite/gcc.target/avr/torture/pr51374-1.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/combine.c
trunk/gcc/testsuite/ChangeLog


[Bug middle-end/52074] ICE: RTL flag check: MEM_VOLATILE_P used with unexpected rtx code 'plus' in extract_fixed_bit_field, at expmed.c:1734

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52074

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek  2012-02-01 
11:47:00 UTC ---
C testcase (-m64 -O2):
struct S { const char *d, *e; } __attribute__((packed));

void
foo (const char **p, struct S *q)
{
  *p = "abcdef";
  q->d = "ghijk";
}

I'd say the bug is in the section anchor support (and the bug goes away with
-O2 -fno-section-anchors; so I'd expect this is a regression since
-fsection-anchors has been introduced and made default on ppc64), because
expand_normal on ADDR_EXPR of the STRING_CST returns a PLUS (which IMHO should
be ok only for EXPAND_SUM etc. but not EXPAND_NORMAL).


[Bug middle-end/52074] ICE: RTL flag check: MEM_VOLATILE_P used with unexpected rtx code 'plus' in extract_fixed_bit_field, at expmed.c:1734

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52074

Jakub Jelinek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-02-01
 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1

--- Comment #3 from Jakub Jelinek  2012-02-01 
12:05:29 UTC ---
Created attachment 26541
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26541
gcc47-pr52074.patch

Untested fix.


[Bug middle-end/48124] [4.4/4.5/4.6/4.7 Regression] likely wrong code bug

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48124

Richard Guenther  changed:

   What|Removed |Added

 Blocks|52080   |

--- Comment #9 from Richard Guenther  2012-02-01 
12:34:55 UTC ---
Simpler patch I am going to test.  Let's hope the wreckage adjust_address
does to the to_rtx MEM (apart from setting its mode) is harmless.

Index: expr.c
===
--- expr.c  (revision 183791)
+++ expr.c  (working copy)
@@ -4705,6 +4705,21 @@ expand_assignment (tree to, tree from, b
to_rtx = adjust_address (to_rtx, mode1, 0);
  else if (GET_MODE (to_rtx) == VOIDmode)
to_rtx = adjust_address (to_rtx, BLKmode, 0);
+ /* If the alignment of tem is larger than its size and we
+are performing a bitfield access limit the mode we use
+for the access to make sure we do not access the decl
+beyond its end.  See PR48124.  */
+ else if (GET_MODE (to_rtx) == BLKmode
+  && mode1 == VOIDmode
+  && DECL_P (tem)
+  && TREE_CODE (DECL_SIZE (tem)) == INTEGER_CST
+  && TREE_INT_CST_LOW (DECL_SIZE (tem)) % DECL_ALIGN (tem))
+   {
+ mode1 = mode_for_size (TREE_INT_CST_LOW (DECL_SIZE (tem))
+% DECL_ALIGN (tem),
+MODE_INT, 0);
+ to_rtx = adjust_address (to_rtx, mode1, 0);
+   }
}

   if (offset != 0)


[Bug rtl-optimization/51374] [avr] insn combine reorders volatile memory accesses

2012-02-01 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51374

--- Comment #10 from Georg-Johann Lay  2012-02-01 
12:40:26 UTC ---
Author: gjl
Date: Wed Feb  1 12:40:23 2012
New Revision: 183797

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183797
Log:
gcc/
Backport from mainline r183796
PR rtl-optimization/51374
* combine.c (can_combine_p): Don't allow volatile_refs_p insns
to cross other volatile_refs_p insns.

gcc/testsuite/
Backport from mainline r183796
PR rtl-optimization/51374
* testsuite/gcc.target/avr/torture/pr51374-1.c: New.


Added:
branches/gcc-4_6-branch/gcc/testsuite/gcc.target/avr/torture/pr51374-1.c
Modified:
branches/gcc-4_6-branch/gcc/ChangeLog
branches/gcc-4_6-branch/gcc/combine.c
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog


[Bug ada/51483] [4.7 regression] cstand.adb:Register_Float_Type makes invalid assumptions about FP representation

2012-02-01 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51483

--- Comment #9 from Mikael Pettersson  2012-02-01 
12:42:44 UTC ---
(In reply to comment #8)
> /tmp/gcc-4.7-20110820/gcc/ada -g -O2 -W -Wall -Wwrite-strings
> -Wstrict-prototypes -Wmissing-prototypes -gnatpg -gnata -I-
> /tmp/gcc-4.7-20110820/gcc/ada/ali-util.adb
> scng.adb:1799:47: "SPARK" is undefined
> gnatmake: "/tmp/gcc-4.7-20110820/gcc/ada/ali-util.adb" compilation error

This is a generic problem affecting all cross-builds, caused by r177183.  For
instance, a gcc-4.6.2 host gcc fails to build gcc-4.7-20120128 as a cross to
sparc64-linux with the above error, even though native builds on sparc64-linux
have no problems building the same gcc-4.7-20120128 with an even older
gcc-4.4.6 host compiler.

However, in the brief period between r177141 and r177183, applying my tentative
patch did allow a successful build of a gcc-4.7 cross to m68k w/ ada, so I'll
try a native bootstrap with it soonish.


[Bug rtl-optimization/51374] [avr] insn combine reorders volatile memory accesses

2012-02-01 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51374

--- Comment #11 from Georg-Johann Lay  2012-02-01 
12:46:42 UTC ---
Author: gjl
Date: Wed Feb  1 12:46:39 2012
New Revision: 183798

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183798
Log:
PR rtl-optimization/51374
* gcc.target/avr/torture/pr51374-1.c:
Also fail if SBIS is seen.


Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/avr/torture/pr51374-1.c


[Bug middle-end/48124] [4.4/4.5/4.6/4.7 Regression] likely wrong code bug

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48124

--- Comment #10 from Richard Guenther  2012-02-01 
12:48:56 UTC ---
(In reply to comment #9)
> Simpler patch I am going to test.  Let's hope the wreckage adjust_address
> does to the to_rtx MEM (apart from setting its mode) is harmless.
> 
> Index: expr.c
> ===
> --- expr.c  (revision 183791)
> +++ expr.c  (working copy)
> @@ -4705,6 +4705,21 @@ expand_assignment (tree to, tree from, b
> to_rtx = adjust_address (to_rtx, mode1, 0);
>   else if (GET_MODE (to_rtx) == VOIDmode)
> to_rtx = adjust_address (to_rtx, BLKmode, 0);
> + /* If the alignment of tem is larger than its size and we
> +are performing a bitfield access limit the mode we use
> +for the access to make sure we do not access the decl
> +beyond its end.  See PR48124.  */
> + else if (GET_MODE (to_rtx) == BLKmode
> +  && mode1 == VOIDmode
> +  && DECL_P (tem)
> +  && TREE_CODE (DECL_SIZE (tem)) == INTEGER_CST
> +  && TREE_INT_CST_LOW (DECL_SIZE (tem)) % DECL_ALIGN (tem))
> +   {
> + mode1 = mode_for_size (TREE_INT_CST_LOW (DECL_SIZE (tem))
> +% DECL_ALIGN (tem),
> +MODE_INT, 0);
> + to_rtx = adjust_address (to_rtx, mode1, 0);
> +   }
> }
> 
>if (offset != 0)

Or rather

Index: gcc/expr.c
===
--- gcc/expr.c  (revision 183791)
+++ gcc/expr.c  (working copy)
@@ -4705,6 +4705,22 @@ expand_assignment (tree to, tree from, b
to_rtx = adjust_address (to_rtx, mode1, 0);
  else if (GET_MODE (to_rtx) == VOIDmode)
to_rtx = adjust_address (to_rtx, BLKmode, 0);
+ /* If the alignment of tem is larger than its size and we
+are performing a bitfield access limit the mode we use
+for the access to make sure we do not access the decl
+beyond its end.  See PR48124.  */
+ else if (GET_MODE (to_rtx) == BLKmode
+  && mode1 == VOIDmode
+  && DECL_P (tem)
+  && TREE_CODE (DECL_SIZE (tem)) == INTEGER_CST
+  && (TREE_INT_CST_LOW (DECL_SIZE (tem))
+  & (DECL_ALIGN (tem) - 1)) != 0)
+   {
+ unsigned HOST_WIDE_INT mis;
+ mis = TREE_INT_CST_LOW (DECL_SIZE (tem)) & (DECL_ALIGN (tem) -
1);
+ mode1 = mode_for_size (mis & -mis, MODE_INT, 0);
+ to_rtx = adjust_address (to_rtx, mode1, 0);
+   }
}

   if (offset != 0)


[Bug rtl-optimization/51374] [avr] insn combine reorders volatile memory accesses

2012-02-01 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51374

Georg-Johann Lay  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED

--- Comment #12 from Georg-Johann Lay  2012-02-01 
12:56:06 UTC ---
Fixed for the milestone.


[Bug middle-end/48124] [4.4/4.5/4.6/4.7 Regression] likely wrong code bug

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48124

--- Comment #11 from Richard Guenther  2012-02-01 
12:57:12 UTC ---
*** Bug 49758 has been marked as a duplicate of this bug. ***


[Bug target/49758] -O2 incorrectly swaps overlapping memory accesses

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49758

Richard Guenther  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE

--- Comment #3 from Richard Guenther  2012-02-01 
12:57:12 UTC ---
Fixed by my proposed fix for PR48124.

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


[Bug middle-end/48124] [4.4/4.5/4.6/4.7 Regression] likely wrong code bug

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48124

--- Comment #12 from Richard Guenther  2012-02-01 
13:05:33 UTC ---
*** Bug 51176 has been marked as a duplicate of this bug. ***


[Bug c/51176] possible integer wrong code bug

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51176

Richard Guenther  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE

--- Comment #2 from Richard Guenther  2012-02-01 
13:05:33 UTC ---
It is.

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


[Bug target/52079] ICE in aggregate_value_p while building libgo on arm-linux-gnueabihf

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52079

Jakub Jelinek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-02-01
 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1

--- Comment #1 from Jakub Jelinek  2012-02-01 
13:43:03 UTC ---
Created attachment 26542
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26542
gcc47-pr52079.patch

Untested fix.  While the c-family/fortran/lto/ada
lang_hooks.types.type_for_mode returns non-NULL for TImode (it creates a type
for 2 * HOST_BITS_PER_WIDE_INT bitsize), go (and assuming java too) just return
NULL.
This is an attempt to try harder in this case, another alternative would be for
go/java type_for_mode and type_for_size langhooks to return non-NULL for TImode
resp. 128-bit size (using build_nonstandard_integer_type), at least when
HOST_BITS_PER_WIDE_INT >= 64 (like other FEs do).


[Bug middle-end/48124] [4.4/4.5/4.6/4.7 Regression] likely wrong code bug

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48124

--- Comment #13 from Richard Guenther  2012-02-01 
13:57:52 UTC ---
Doesn't work.

MEM_SIZE also seems to be somewhat random, because we
re-initialize it via set_mem_attributes_minus_bitpos.  So we can't
fixup the caller to get_best_mode easily without passing down extra
knowledge.

We could pass down fieldmode from store_bit_field_1 to store_fixed_bit_field
and give it some more meaningful mode in the ultimate caller
(expand_assignment).

But then there is the HAVE_insv path which uses mode_for_extraction
which would need to be disabled if that mode is bigger than fieldmode
(but we don't do that at the moment, not sure why).

As usual, bitfield expansion seems to be quite a messy area.


[Bug target/52079] ICE in aggregate_value_p while building libgo on arm-linux-gnueabihf

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52079

--- Comment #2 from Jakub Jelinek  2012-02-01 
14:01:09 UTC ---
Created attachment 26543
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26543
gcc47-pr52079.patch

Alternate patch for the GO FE.  There are hundreds of other
lang_hooks.types.type_for_mode callers, so this variant seems to be safer to
me, at least at this point.


[Bug middle-end/48124] [4.4/4.5/4.6/4.7 Regression] likely wrong code bug

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48124

--- Comment #14 from Richard Guenther  2012-02-01 
14:17:05 UTC ---
I remember (bug number?) we have the same issue with multi-word accesses
where the last part uses word_mode (all other pieces as well, of course)
and that accesses the object out-of-bounds.


[Bug target/52079] ICE in aggregate_value_p while building libgo on arm-linux-gnueabihf

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52079

Jakub Jelinek  changed:

   What|Removed |Added

  Attachment #26543|0   |1
is obsolete||

--- Comment #3 from Jakub Jelinek  2012-02-01 
14:17:54 UTC ---
Created attachment 26544
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26544
gcc47-pr52079-2.patch

The alternate patch for real this time.


[Bug target/52079] ICE in aggregate_value_p while building libgo on arm-linux-gnueabihf

2012-02-01 Thread ian at airs dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52079

--- Comment #4 from Ian Lance Taylor  2012-02-01 14:22:36 
UTC ---
The patch to gcc/go/go-lang.c is OK.  You don't need the #if as far as I'm
concerned.

(The whole idea of a frontend hook for type_for_mode is somewhat broken
anyhow.)


[Bug middle-end/45416] [4.5/4.6 Regression] Code size regression from 4.4 for ARM

2012-02-01 Thread rearnsha at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45416

Richard Earnshaw  changed:

   What|Removed |Added

 Target||arm
 Status|NEW |RESOLVED
 Resolution||FIXED
   Target Milestone|4.5.4   |4.7.0

--- Comment #17 from Richard Earnshaw  2012-02-01 
14:47:09 UTC ---
fixed.  Not a wrong-code bug, so not backporting.


[Bug target/50235] Wrong code with volatile bitfields and -Os

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50235

Richard Guenther  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE

--- Comment #2 from Richard Guenther  2012-02-01 
14:53:21 UTC ---
It is.

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


[Bug middle-end/48124] [4.4/4.5/4.6/4.7 Regression] likely wrong code bug

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48124

--- Comment #15 from Richard Guenther  2012-02-01 
14:53:21 UTC ---
*** Bug 50235 has been marked as a duplicate of this bug. ***


[Bug middle-end/51994] [4.6/4.7 Regression] git-1.7.8.3 miscompiled due to negative bitpos from get_inner_reference

2012-02-01 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994

--- Comment #25 from Eric Botcazou  2012-02-01 
15:34:37 UTC ---
I've changed my mind: given that we shouldn't have references outside the base
object in valid programs, there must be an offset if the bitpos is negative, so
we can simply add the (rounded) latter to the former.  That's what the callers
would have to do anyway, so we'd better factor it in get_inner_reference.


[Bug middle-end/51994] [4.6/4.7 Regression] git-1.7.8.3 miscompiled due to negative bitpos from get_inner_reference

2012-02-01 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994

--- Comment #26 from Eric Botcazou  2012-02-01 
15:36:06 UTC ---
Created attachment 26545
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26545
Tentative fix

Uros, does it fix the original issue?


[Bug middle-end/51994] [4.6/4.7 Regression] git-1.7.8.3 miscompiled due to negative bitpos from get_inner_reference

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994

--- Comment #28 from Richard Guenther  2012-02-01 
15:41:52 UTC ---
(In reply to comment #27)
> (In reply to comment #25)
> > I've changed my mind: given that we shouldn't have references outside the 
> > base
> > object in valid programs, there must be an offset if the bitpos is 
> > negative, so
> > we can simply add the (rounded) latter to the former.  That's what the 
> > callers
> > would have to do anyway, so we'd better factor it in get_inner_reference.
> 
> I'm not sure it's the best thing to do (adjusting 'offset' by
> a BITS_PER_UNIT multiple instead of whatever the caller would like the most).
> Only the callers would know how they want to adjust for negative bitpos.

Oh, and if you do that, please change bitpos to unsigned HOST_WIDE_INT *.


[Bug middle-end/51994] [4.6/4.7 Regression] git-1.7.8.3 miscompiled due to negative bitpos from get_inner_reference

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994

--- Comment #27 from Richard Guenther  2012-02-01 
15:41:15 UTC ---
(In reply to comment #25)
> I've changed my mind: given that we shouldn't have references outside the base
> object in valid programs, there must be an offset if the bitpos is negative, 
> so
> we can simply add the (rounded) latter to the former.  That's what the callers
> would have to do anyway, so we'd better factor it in get_inner_reference.

I'm not sure it's the best thing to do (adjusting 'offset' by
a BITS_PER_UNIT multiple instead of whatever the caller would like the most).
Only the callers would know how they want to adjust for negative bitpos.


[Bug middle-end/48124] [4.4/4.5/4.6/4.7 Regression] likely wrong code bug

2012-02-01 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48124

--- Comment #16 from Richard Guenther  2012-02-01 
15:48:15 UTC ---
Created attachment 26546
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26546
another patch

This patch passes bootstrap on x86_64-unknown-linux-gnu but ICEs in
struct-layout tests.


[Bug middle-end/51994] [4.6/4.7 Regression] git-1.7.8.3 miscompiled due to negative bitpos from get_inner_reference

2012-02-01 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994

Eric Botcazou  changed:

   What|Removed |Added

  Attachment #26545|0   |1
is obsolete||

--- Comment #29 from Eric Botcazou  2012-02-01 
15:49:14 UTC ---
Created attachment 26547
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26547
Correct fix

This adds the missing division...


[Bug middle-end/51994] [4.6/4.7 Regression] git-1.7.8.3 miscompiled due to negative bitpos from get_inner_reference

2012-02-01 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994

--- Comment #30 from Eric Botcazou  2012-02-01 
15:53:25 UTC ---
> I'm not sure it's the best thing to do (adjusting 'offset' by
> a BITS_PER_UNIT multiple instead of whatever the caller would like the most).
> Only the callers would know how they want to adjust for negative bitpos.

I don't think the callers are prepared for a reference outside the base object,
so there must be a offset.  And I don't see what they would want to do with a
negative bitpos, apart from translating it somehow or other.


[Bug middle-end/51994] [4.6/4.7 Regression] git-1.7.8.3 miscompiled due to negative bitpos from get_inner_reference

2012-02-01 Thread rguenther at suse dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994

--- Comment #31 from rguenther at suse dot de  
2012-02-01 16:00:41 UTC ---
On Wed, 1 Feb 2012, ebotcazou at gcc dot gnu.org wrote:

> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994
> 
> --- Comment #30 from Eric Botcazou  2012-02-01 
> 15:53:25 UTC ---
> > I'm not sure it's the best thing to do (adjusting 'offset' by
> > a BITS_PER_UNIT multiple instead of whatever the caller would like the 
> > most).
> > Only the callers would know how they want to adjust for negative bitpos.
> 
> I don't think the callers are prepared for a reference outside the base 
> object,
> so there must be a offset.  And I don't see what they would want to do with a
> negative bitpos, apart from translating it somehow or other.

The base object can be an indirect reference, so yes, there doesn't have
to be an overall positive offset (well, yes, to the _real_ object,
but we don't see that).

Yes, you have to adjust for a negative _bit_ position.  But fact is
the whole constant offset (even if negative) is usually returned via
bitpos.


[Bug target/52055] load of 64-bit pointer reads 64 bits even when only 32 are used

2012-02-01 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52055

--- Comment #4 from Eric Botcazou  2012-02-01 
16:13:43 UTC ---
> So, shell we do this kind of shortening in fwprop instead?  If a MEM load has
> all uses subregged to a narrower mode, try to subreg it and adjust the 
> callers?

This would be backward combining (a la REE) though, not forward propagating.


[Bug middle-end/51994] [4.6/4.7 Regression] git-1.7.8.3 miscompiled due to negative bitpos from get_inner_reference

2012-02-01 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994

--- Comment #32 from Eric Botcazou  2012-02-01 
16:34:30 UTC ---
> The base object can be an indirect reference, so yes, there doesn't have
> to be an overall positive offset (well, yes, to the _real_ object,
> but we don't see that).

If this is an indirect reference, there is no base object by definition.  So
I'm not sure we should care in get_inner_reference and, in any case, I'm not
sure what to do.  Probably avoid sending MEM_REF to get_inner_reference in this
case,
after all it's clearly not a handled_component_p-like thing.


[Bug target/52055] load of 64-bit pointer reads 64 bits even when only 32 are used

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52055

--- Comment #5 from Jakub Jelinek  2012-02-01 
16:35:13 UTC ---
That's true, but currently REE is after reload, this combining would be better
done before reload.  Perhaps a separate post-combine pre-ira pass could handle
that and also perhaps PR50176 (if it is somehow possible to insert CC clobbers
to insns that don't have it safely).  The UD/DU links computation REE does is
very expensive I think.


[Bug fortran/52083] New: Misleading warning for internal procedures with names of intrinsic procedures

2012-02-01 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52083

 Bug #: 52083
   Summary: Misleading warning for internal procedures with names
of intrinsic procedures
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Keywords: diagnostic
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: bur...@gcc.gnu.org


The following warning does not make much sense for internal procedures - their
interface is known by construction

The example prints:

  Warning: 'fraction' declared at (1) is also the name of an intrinsic.  It
can only be called via an explicit interface or if declared EXTERNAL.


Expected: Do the same as for module procedures, namely print:

  Warning: 'fraction' declared at (1) may shadow the intrinsic of the same
name.  In order to call the intrinsic, explicit INTRINSIC declarations
may be required.


Example:

  x = fraction()
contains
  function fraction()
fraction = 1./42.
  end function fraction
end


 * * *

One probably needs to check:

  sym->ns->parent && sym->ns->parent->proc_name
  && sym->ns->parent->proc_name->attr.flavor != FL_MODULE

The current checks are done in intrinsic.c's gfc_warn_intrinsic_shadow.


[Bug target/52080] Stores to bitfields introduce a store-data-race on adjacent data

2012-02-01 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52080

Eric Botcazou  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-02-01
 Ever Confirmed|0   |1

--- Comment #5 from Eric Botcazou  2012-02-01 
17:11:10 UTC ---
You probably need to add a 'volatile' somewhere to really have wrong code.


[Bug target/52080] Stores to bitfields introduce a store-data-race on adjacent data

2012-02-01 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52080

--- Comment #6 from Eric Botcazou  2012-02-01 
17:45:08 UTC ---
get_best_mode returns DImode because of:

/* Nonzero if access to memory by bytes is slow and undesirable.
   For RISC chips, it means that access to memory by bytes is no
   better than access by words when possible, so grab a whole word
   and maybe make use of that.  */
#define SLOW_BYTE_ACCESS 1


[Bug target/52080] Stores to bitfields introduce a store-data-race on adjacent data

2012-02-01 Thread matz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52080

Michael Matz  changed:

   What|Removed |Added

 CC||matz at gcc dot gnu.org

--- Comment #7 from Michael Matz  2012-02-01 17:49:45 
UTC ---
Yeah.  Which is okay for reading, but doing the same when writing is
problematic.


[Bug c++/50308] __attribute__((deprecated)) incorrectly generates warning in ADL lookup

2012-02-01 Thread iains at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50308

Iain Sandoe  changed:

   What|Removed |Added

 CC||iains at gcc dot gnu.org

--- Comment #2 from Iain Sandoe  2012-02-01 17:57:04 
UTC ---
the warning is generated from:
 /GCC/gcc-live-trunk/gcc/cp/semantics.c:3342

the decl is unused on entry to finish_id_expression () ..
.. and marked as used (on line 3306) ... is that expected?

Otherwise, I'd assume that we could guard  line 3342 with say...
  if (TREE_USED (decl) && TREE_DEPRECATED (decl))
warn_deprecated_use (decl, NULL_TREE);

dunno..
===

(gdb) call debug_tree(node)
 >
QI
size 
unit size 
align 8 symtab 0 alias set -1 canonical type 0x42129f00
arg-types 
chain >>>
used public deprecated external QI file ../tests-attr/pr50308-1.C line 1
col 6 align 8 context 
arguments 
unit size 
align 32 symtab 0 alias set -1 canonical type 0x4211a3c0 precision
32 min  max 
pointer_to_this >
SI file ../tests-attr/pr50308-1.C line 1 col 9 size  unit size 
align 32 context 
arg-type >
full-name "void A(int)"
chain >


[Bug middle-end/51994] [4.6/4.7 Regression] git-1.7.8.3 miscompiled due to negative bitpos from get_inner_reference

2012-02-01 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994

--- Comment #33 from Uros Bizjak  2012-02-01 18:41:59 
UTC ---
(In reply to comment #29)
> Created attachment 26547 [details]
> Correct fix
> 
> This adds the missing division...

This patch fixes both the testcase and original issue. Thanks!


[Bug target/52080] Stores to bitfields introduce a store-data-race on adjacent data

2012-02-01 Thread bergner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52080

Peter Bergner  changed:

   What|Removed |Added

 Target|ia64-*-linux,   |ia64-*-linux,
   |sparc64-*-linux |sparc64-*-linux,
   ||powerpc64-*-linux
 CC||bergner at gcc dot gnu.org

--- Comment #8 from Peter Bergner  2012-02-01 
18:52:06 UTC ---
This fails on powerpc64-linux as well (-m64), where we generate:

ld 9,8(3)
li 10,1
rldimi 9,10,31,32
std 9,8(3)
blr


[Bug target/52079] ICE in aggregate_value_p while building libgo on arm-linux-gnueabihf

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52079

--- Comment #5 from Jakub Jelinek  2012-02-01 
18:58:51 UTC ---
Author: jakub
Date: Wed Feb  1 18:58:44 2012
New Revision: 183806

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183806
Log:
PR target/52079
* go-lang.c (go_langhook_type_for_mode): For TImode and 64-bit HWI
return build_nonstandard_integer_type result if possible.

Modified:
trunk/gcc/go/ChangeLog
trunk/gcc/go/go-lang.c


[Bug fortran/52059] [4.7 Regression] ICE in gfc_conv_variable

2012-02-01 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52059

--- Comment #6 from Tobias Burnus  2012-02-01 
19:01:54 UTC ---
Author: burnus
Date: Wed Feb  1 19:01:49 2012
New Revision: 183807

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183807
Log:
2012-02-01  Tobias Burnus

PR fortran/52059
* trans-expr.c (gfc_conv_procedure_call): Add array ref
only to variables.

2012-02-01  Tobias Burnus

PR fortran/52059
* gfortran.dg/elemental_function_1.f90: New.


Added:
trunk/gcc/testsuite/gfortran.dg/elemental_function_1.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-expr.c
trunk/gcc/testsuite/ChangeLog


[Bug boehm-gc/46311] boehm-gc build problem with uclibc

2012-02-01 Thread dougmencken at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46311

Douglas Mencken  changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|MOVED   |

--- Comment #3 from Douglas Mencken  2012-02-01 
19:04:19 UTC ---
Re-opening this. uClibc can't stop defining __GLIBC__ due to compatibility with
a lot of stuff, especially ones which use autotools. 

I still must apply this patch:
ftp://ftp.osuosl.org/pub/manulix/scripts/build-scripts/PPFILES/ppfiles-gcc/boehm-gc_uclibc_gc.h.patch
to get the current GCC to be built with GCJ.

Also, by the way, in bdw-gc, starting from the
http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/bdwgc-7_2alpha5-20110107.tar.bz2
release, this issue has been already fixed.


[Bug fortran/52024] [OOP] GENERIC operator cannot be resolved

2012-02-01 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52024

--- Comment #10 from Tobias Burnus  2012-02-01 
19:06:11 UTC ---
Author: burnus
Date: Wed Feb  1 19:06:07 2012
New Revision: 183808

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183808
Log:
2012-02-01  Tobias Burnus  

PR fortran/52024
* module.c (MOD_VERSION): Bump.
(mio_typebound_proc): Read/write is_operator from/to the
.mod file.

2012-02-01  Tobias Burnus  

PR fortran/52024
* gfortran.dg/typebound_operator_14.f90: New.


Added:
trunk/gcc/testsuite/gfortran.dg/typebound_operator_14.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/module.c
trunk/gcc/testsuite/ChangeLog


[Bug fortran/52059] [4.7 Regression] ICE in gfc_conv_variable

2012-02-01 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52059

Tobias Burnus  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED

--- Comment #7 from Tobias Burnus  2012-02-01 
19:12:27 UTC ---
FIXED on the trunk (4.7).


[Bug fortran/52024] [OOP] GENERIC operator cannot be resolved

2012-02-01 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52024

Tobias Burnus  changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution||FIXED

--- Comment #11 from Tobias Burnus  2012-02-01 
19:14:54 UTC ---
FIXED on the trunk (4.7).

Thanks Dominique for updated test case.

(In reply to comment #9)
> However, I believe that test case is valid.

Actually, I now think that it invalid and correctly rejected by gfortran, cf.
http://gcc.gnu.org/ml/fortran/2012-01/msg00278.html


[Bug fortran/51958] [4.7 Regression] -ffrontend-optimize generates wrong code

2012-02-01 Thread tkoenig at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51958

--- Comment #3 from Thomas Koenig  2012-02-01 
19:40:29 UTC ---
Author: tkoenig
Date: Wed Feb  1 19:40:25 2012
New Revision: 183812

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183812
Log:
2012-02-01  Thomas König  

PR fortran/51958
* frontend-passes.c (convert_elseif):  New function.
(optimize_namespace):  Call it.

2012-02-01  Thomas König  

PR fortran/51958
* gfortran.dg/function_optimize_10.f90:  New test.


Added:
trunk/gcc/testsuite/gfortran.dg/function_optimize_10.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/frontend-passes.c
trunk/gcc/testsuite/ChangeLog


[Bug middle-end/48071] [4.6/4.7 Regression] Blank line after 'all warnings being treated as errors'

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48071

Andrew Pinski  changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-02-01
  Component|driver  |middle-end
   Target Milestone|--- |4.6.3
Summary|Blank line after 'all   |[4.6/4.7 Regression] Blank
   |warnings being treated as   |line after 'all warnings
   |errors' |being treated as errors'
 Ever Confirmed|0   |1

--- Comment #1 from Andrew Pinski  2012-02-01 
19:41:49 UTC ---
Confirmed.


[Bug driver/45166] gcc -MD misses multiple command line source files

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45166

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID

--- Comment #1 from Andrew Pinski  2012-02-01 
19:45:50 UTC ---
>b.c was lost, but should be listed.

It is in b.d.
cat *.d
a.o: a.c
b.o: b.c


[Bug boehm-gc/46311] boehm-gc build problem with uclibc

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46311

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID

--- Comment #4 from Andrew Pinski  2012-02-01 
19:51:58 UTC ---
This is a bug in uclibc defining __GLIBC__ and yes they partly get away with it
but that is still the bug.  Maybe if they define __GLIBC__ they should
implement all the features of glibc including execinfo.h .  This is why this is
not a beohm-gc issue but rather an uclibc issue.


[Bug c++/50986] weak static data members with constant initializers emitted in .rodata, leading to segfault on startup

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50986

--- Comment #1 from Andrew Pinski  2012-02-01 
19:58:12 UTC ---
I think you are violating ODR here.


[Bug middle-end/25912] Problem compiling Asterisk 1.2.2 with Debian 3.1 (Sarge) gcc (3.3.5 (Debian 1:3.3.5-13))

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25912

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
  Known to work||
 Resolution||INVALID

--- Comment #5 from Andrew Pinski  2012-02-01 
20:12:16 UTC ---
No feedback in almost 5 years so closing.


[Bug middle-end/31892] optimization: Loop not optimized away because of static

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31892

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-02-01
Summary|optimization: Loop not  |optimization: Loop not
   |optimized away  |optimized away because of
   ||static
 Ever Confirmed|0   |1

--- Comment #1 from Andrew Pinski  2012-02-01 
20:17:47 UTC ---
Confirmed, the issue is the fortran front-end promotes A to being static. 
Maybe we should just add code to the middle-end that does that.


[Bug middle-end/35082] 841 unexpected failures in gfortran testsuite with GMP 2.0n ABI

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35082

--- Comment #5 from Andrew Pinski  2012-02-01 
20:20:31 UTC ---
Do you know if these work after the fixes you did recently?


[Bug go/52084] New: go tests fail to link on powerpc-linux-gnu (undefined reference to __sync_add_and_fetch_8)

2012-02-01 Thread doko at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52084

 Bug #: 52084
   Summary: go tests fail to link on powerpc-linux-gnu (undefined
reference to __sync_add_and_fetch_8)
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: go
AssignedTo: i...@airs.com
ReportedBy: d...@gcc.gnu.org


with the patch proposed in PR52074 the build of libgo succeeds, but every test
case fails with:

/home/doko/gcc/snap/gcc-snapshot-20120131/build/powerpc-linux-gnu/libgo/.libs/libgo.so:
undefined reference to `__sync_add_and_fetch_8'
/home/doko/gcc/snap/gcc-snapshot-20120131/build/powerpc-linux-gnu/libgo/.libs/libgo.so:
undefined reference to `__sync_bool_compare_and_swap_8'
collect2: error: ld returned 1 exit status
FAIL: fmt
make[2]: *** [fmt/check] Error 1


[Bug middle-end/52074] ICE: RTL flag check: MEM_VOLATILE_P used with unexpected rtx code 'plus' in extract_fixed_bit_field, at expmed.c:1734

2012-02-01 Thread doko at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52074

--- Comment #4 from Matthias Klose  2012-02-01 
20:24:08 UTC ---
libgo builds with this fix.

libgo now fails to run every test (see PR52084).


[Bug middle-end/31509] FAIL: libgomp.fortran/omp_parse3.f90 -O3 -g

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31509

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED

--- Comment #2 from Andrew Pinski  2012-02-01 
20:38:54 UTC ---
(In reply to comment #1)
> This is fixed.

So closing it as such.


[Bug middle-end/35082] 841 unexpected failures in gfortran testsuite with GMP 2.0n ABI

2012-02-01 Thread dave.anglin at bell dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35082

--- Comment #6 from dave.anglin at bell dot net 2012-02-01 20:40:07 UTC ---
On 2/1/2012 3:20 PM, pinskia at gcc dot gnu.org wrote:
> Do you know if these work after the fixes you did recently?
Unlikely, however, I should recheck the report and try to find the problem.


[Bug middle-end/38528] ICE while building libgfortran (gcc bootstrap)

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38528

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||WONTFIX
   Target Milestone|--- |4.6.0

--- Comment #5 from Andrew Pinski  2012-02-01 
20:40:30 UTC ---
-combine has gone away now in 4.6.0 and above so closing as won't fix.


[Bug middle-end/39744] component references with VIEW_CONVERT_EXPR should be canonicalized

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39744

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-02-01
 Ever Confirmed|0   |1

--- Comment #2 from Andrew Pinski  2012-02-01 
20:43:54 UTC ---
Confirmed, right now we get:
  D.1711_2 = VIEW_CONVERT_EXPR(1).y.z;
  return D.1711_2;


[Bug fortran/51958] [4.7 Regression] -ffrontend-optimize generates wrong code

2012-02-01 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51958

Tobias Burnus  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 CC||burnus at gcc dot gnu.org
 Resolution||FIXED

--- Comment #4 from Tobias Burnus  2012-02-01 
20:53:15 UTC ---
Mark as FIXED (4.7 trunk).

Thanks for the patch Thomas!


[Bug c++/50986] weak static data members with constant initializers emitted in .rodata, leading to segfault on startup

2012-02-01 Thread richard-gccbugzilla at metafoo dot co.uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50986

--- Comment #2 from Richard Smith  
2012-02-01 21:14:35 UTC ---
As noted in comment#0, I believe there is no ODR violation here. Each
definition of U::k consists of the same sequence of tokens, every name
refers to the same entity in both definitions, and none of the other provisions
of [basic.def.odr]p5 applies.

After some discussion, the proposed approach in clang is (roughly) to always
generate a guard variable (initialized to 1 for a statically-initialized
variable), and to put the variable and its guard variable in the same COMDAT
group. Full details are in this thread:

http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-November/018816.html


[Bug c/52085] New: sizeof packed enum can vary without warning depending on include order

2012-02-01 Thread joe.eykholt at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52085

 Bug #: 52085
   Summary: sizeof packed enum can vary without warning depending
on include order
Classification: Unclassified
   Product: gcc
   Version: 4.5.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: joe.eykh...@gmail.com


An enum that can be packed to 1 byte will be 4 bytes long if it is used in a
function prototype return type (or perhaps a parameter) before its declaration.

Suppose the enum is declared in header file enum.h and used in a function
prototype in header use.h.   If enum.h is included first, the enum will be 1
byte long, otherwise it'll be 4 bytes.

It would be very nice if there was a warning about this at least.  It would be
even better if the size of the enum was treated as indeterminate until the
declaration.

Otherwise, a structure using this enum would have different sizes in different
C files if they include those headers in different orders.

#include 

enum name func(void);   /* comment this out to get 1-byte enum */

enum name {
val = 1,
} __attribute__ ((__packed__));

enum name x;

int main(int argc, char **argv)
{
printf("%zd\n", sizeof(x));
return 0;
}

Here's the build and version info:

$ gcc -v -save-temps -o t t.c
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-redhat-linux/4.5.1/lto-wrapper
Target: i686-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla
--enable-bootstrap --enable-shared --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-gnu-unique-object
--enable-linker-build-id
--enable-languages=c,c++,objc,obj-c++,java,fortran,ada,lto --enable-plugin
--enable-java-awt=gtk --disable-dssi
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre
--enable-libgcj-multifile --enable-java-maintainer-mode
--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib
--with-ppl --with-cloog --with-tune=generic --with-arch=i686
--build=i686-redhat-linux
Thread model: posix
gcc version 4.5.1 20100924 (Red Hat 4.5.1-4) (GCC) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 't' '-mtune=generic' '-march=i686'
 /usr/libexec/gcc/i686-redhat-linux/4.5.1/cc1 -E -quiet -v t.c -mtune=generic
-march=i686 -fpch-preprocess -o t.i
ignoring nonexistent directory
"/usr/lib/gcc/i686-redhat-linux/4.5.1/include-fixed"
ignoring nonexistent directory
"/usr/lib/gcc/i686-redhat-linux/4.5.1/../../../../i686-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/lib/gcc/i686-redhat-linux/4.5.1/include
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 't' '-mtune=generic' '-march=i686'
 /usr/libexec/gcc/i686-redhat-linux/4.5.1/cc1 -fpreprocessed t.i -quiet
-dumpbase t.c -mtune=generic -march=i686 -auxbase t -version -o t.s
GNU C (GCC) version 4.5.1 20100924 (Red Hat 4.5.1-4) (i686-redhat-linux)
compiled by GNU C version 4.5.1 20100924 (Red Hat 4.5.1-4), GMP version
4.3.1, MPFR version 2.4.2, MPC version 0.8.1
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128270
GNU C (GCC) version 4.5.1 20100924 (Red Hat 4.5.1-4) (i686-redhat-linux)
compiled by GNU C version 4.5.1 20100924 (Red Hat 4.5.1-4), GMP version
4.3.1, MPFR version 2.4.2, MPC version 0.8.1
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128270
Compiler executable checksum: 96e2ff891a3517bf2aed246a142fe05d
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 't' '-mtune=generic' '-march=i686'
 as -V -Qy --32 -o t.o t.s
GNU assembler version 2.20.51.0.7 (i686-redhat-linux) using BFD version version
2.20.51.0.7-6.fc14 20100318
COMPILER_PATH=/usr/libexec/gcc/i686-redhat-linux/4.5.1/:/usr/libexec/gcc/i686-redhat-linux/4.5.1/:/usr/libexec/gcc/i686-redhat-linux/:/usr/lib/gcc/i686-redhat-linux/4.5.1/:/usr/lib/gcc/i686-redhat-linux/
LIBRARY_PATH=/usr/lib/gcc/i686-redhat-linux/4.5.1/:/usr/lib/gcc/i686-redhat-linux/4.5.1/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 't' '-mtune=generic' '-march=i686'
 /usr/libexec/gcc/i686-redhat-linux/4.5.1/collect2 --build-id --no-add-needed
--eh-frame-hdr -m elf_i386 --hash-style=gnu -dynamic-linker /lib/ld-linux.so.2
-o t /usr/lib/gcc/i686-redhat-linux/4.5.1/../../../crt1.o
/usr/lib/gcc/i686-redhat-linux/4.5.1/../../../crti.o
/usr/lib/gcc/i686-redhat-linux/4.5.1/crtbegin.o
-L/usr/lib/gcc/i686-redhat-linux/4.5.1
-L/usr/lib/gcc/i686-redhat-linux/4.5.1/../../.. t.o -lgcc --as-needed -lgcc_s
--no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed
/usr/lib/gcc/i686-redhat-linux/4.5.1/crtend.o
/usr/lib/gcc/i686-redhat-linux/4.5.1/../../../crtn.o


[Bug target/52086] New: [4.7 Regression] ICE caused by wrong peephole2 for QImode mem += reg followed by test

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52086

 Bug #: 52086
   Summary: [4.7 Regression] ICE caused by wrong peephole2 for
QImode mem += reg followed by test
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: ja...@gcc.gnu.org
ReportedBy: ja...@gcc.gnu.org
Target: i?86-linux


/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-additional-options "-fpic" { target fpic } } */

struct S { char a; char b[100]; };
int bar (void);
int baz (int);

void
foo (struct S *x)
{
  if (bar () & 1)
{
  char c = bar ();
  baz (4);
  x->a += c;
  while (x->a)
x->b[c] = bar ();
}
}

ICEs on i?86-linux (and x86_64-linux -m32) starting with:
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=179646


[Bug target/52086] [4.7 Regression] ICE caused by wrong peephole2 for QImode mem += reg followed by test

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52086

Jakub Jelinek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-02-01
  Known to work||4.6.3
   Target Milestone|--- |4.7.0
 Ever Confirmed|0   |1
  Known to fail||4.7.0


[Bug target/52086] [4.7 Regression] ICE caused by wrong peephole2 for QImode mem += reg followed by test

2012-02-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52086

--- Comment #1 from Jakub Jelinek  2012-02-01 
22:01:04 UTC ---
Created attachment 26548
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26548
gcc47-pr52086.patch

Untested fix.


[Bug middle-end/38575] free() accept argument that has the same name with standard/builtin function

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38575

Andrew Pinski  changed:

   What|Removed |Added

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

--- Comment #3 from Andrew Pinski  2012-02-01 
22:25:49 UTC ---
t7.c:4:13: warning: attempt to free a non-heap object [-Wfree-nonheap-object]
Fixed in 4.6.0 and above.


[Bug middle-end/38126] suboptimal code for (a && b || !a && !b)

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38126

Andrew Pinski  changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-02-01
 Ever Confirmed|0   |1

--- Comment #2 from Andrew Pinski  2012-02-01 
22:37:56 UTC ---
Confirmed.


[Bug middle-end/34010] [4.4/4.5/4.6/4.7 Regression] ppc64 bad stdargs codegen for zero sized objects

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34010

Andrew Pinski  changed:

   What|Removed |Added

   Keywords||wrong-code
 Target|powerpc-apple-darwin9   |powerpc-apple-darwin9,
   ||mips*-*-*
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-02-01
   Target Milestone|--- |4.4.7
Summary|ppc64 bad stdargs codegen   |[4.4/4.5/4.6/4.7
   |for zero sized objects  |Regression] ppc64 bad
   ||stdargs codegen for zero
   ||sized objects
 Ever Confirmed|0   |1

--- Comment #1 from Andrew Pinski  2012-02-01 
23:01:37 UTC ---
A patch was posted here:
http://gcc.gnu.org/ml/gcc-patches/2012-01/msg01564.html


[Bug c/41809] escaping address of packed field should trigger warning

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41809

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-02-01
 Ever Confirmed|0   |1

--- Comment #2 from Andrew Pinski  2012-02-01 
23:28:03 UTC ---
Confirmed.


[Bug bootstrap/48815] configure: error: Link tests are not allowed after GCC_NO_EXECUTABLES.

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48815

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
  Component|other   |bootstrap
 Resolution||INVALID

--- Comment #11 from Andrew Pinski  2012-02-01 
23:30:35 UTC ---
Closing as invalid as --disabled-shared is invalid for darwin.


[Bug driver/44080] Call GNU ld with -O1

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44080

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-02-01
  Component|other   |driver
 Ever Confirmed|0   |1

--- Comment #2 from Andrew Pinski  2012-02-01 
23:31:17 UTC ---
Confirmed.  Patches goto gcc-patches@.


[Bug c++/52035] internal compiler error: tree code ‘template_type_parm’ is not supported in LTO streams

2012-02-01 Thread marbacz at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52035

Marcin Baczyński  changed:

   What|Removed |Added

  Known to work||4.6.2

--- Comment #4 from Marcin Baczyński  2012-02-01 
23:39:38 UTC ---
I think this should be marked as a 4.7 regression. I just tested 4.6.2 and it
works.

gcc version 4.6.2 (Gentoo 4.6.2 p1.3, pie-0.5.0)


[Bug testsuite/29527] make clean in libiberty/testsuite does nothing when EXEEXT is defined

2012-02-01 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29527

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-02-01
Summary|make clean in   |make clean in
   |libiberty/testsuite does|libiberty/testsuite does
   |nothing under cygwin|nothing when EXEEXT is
   ||defined
 Ever Confirmed|0   |1

--- Comment #1 from Andrew Pinski  2012-02-01 
23:44:26 UTC ---
Confirmed.


  1   2   >