[Bug preprocessor/60492] Using the L#param in a macro fails

2014-03-14 Thread jr at heisey dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60492

--- Comment #6 from J.R. Heisey jr at heisey dot org ---
Really? What rule would make this behavior expected?


[Bug c++/60517] warning/error for taking address of member of a temporary object

2014-03-14 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60517

--- Comment #3 from Marc Glisse glisse at gcc dot gnu.org ---
(In reply to Manuel López-Ibáñez from comment #2)
 (In reply to Marc Glisse from comment #1)
  I see in the dump:
  
# .MEM_4 = VDEF .MEM_8
D.2272 ={v} {CLOBBER};
# VUSE .MEM_4
_5 = MEM[(doubleD.39 *)D.2272];
  
  which looks like something we could warn about in the middle-end.
 
 Could you elaborate? My middle-end foo is not as good as it used to be.

_5 = MEM[(doubleD.39 *)D.2272];
says we are reading something inside variable D.2272. And right in the previous
instruction:
D.2272 ={v} {CLOBBER};
we clobbered the content of that variable, so what we are reading is nonsense.
These clobbers are specifically added to indicate when variables die (like your
temporary).
And we don't need to rely on the clobber being exactly the previous
instruction. The state of the memory (VUSE) when we execute the last
instruction was defined (VDEF) by the clobber instruction, typically
walk_aliased_vdefs would help you find the last instructions that touched
something related to the variable (get_ref_base_and_extent to get the variable
maybe?), the visitor would always stop, recording if the instruction was a
clobber, and you would check if all branches (or one branch for a -Wmaybe- type
of warning?) stopped on a clobber. Some passes may record enough information to
make the walk unnecessary, but I am not sure. And you may want to record
objects you have already warned about, to avoid flooding if a dead variable is
used a lot.

Now that I am describing it, there may already be code that does the same thing
for use-after-free or other cases?

Anyway, a hard part would be deciding in which pass to warn. And turning this
vague description (assuming it makes at least a bit of sense) into something
that actually works. And finding a right compromise between false positives and
false negatives. The usual...

[Bug preprocessor/60492] Using the L#param in a macro fails

2014-03-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60492

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org ---
E.g. in ISO C99, 6.10.3.2, you can read that #s is replaced by a single
preprocessing token, but the mere fect that L immediately precedes it doesn't
make it a part of the same preprocessing token.  For wide character literals,
the L needs to be part of the same preprocessing token as the string after
it.


[Bug libstdc++/60521] New: std::lock_guard ignores adopt_lock strategy

2014-03-14 Thread turchanov at farpost dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60521

Bug ID: 60521
   Summary: std::lock_guard ignores adopt_lock strategy
   Product: gcc
   Version: 4.8.3
Status: UNCONFIRMED
  Severity: blocker
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: turchanov at farpost dot com

lock_guard created with constructor lock_guard::lock_guard(mutex_type m,
adopt_lock_t tag) must adopt already locked mutex. But current implementation
ignores completely this fact and tries to lock passed mutex unconditionally:

 templatetypename _Mutex
class lock_guard {
...
  lock_guard(mutex_type __m, adopt_lock_t) : _M_device(__m)
  { } // calling thread owns mutex
...
};

and given the fact that mutex type is not a recursive mutex this code sequence
produces a dead-lock:

mutex mtx;
mtx.lock();
lock_guardmutex guard(mtx, adopt_lock);  // -- deadlocks!


[Bug target/60520] stack adjustment are not merged anymore

2014-03-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60520

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
(In reply to H.J. Lu from comment #4)
 This change:
 
 diff --git a/gcc/function.c b/gcc/function.c
 index a61e475..3b6718f 100644
 --- a/gcc/function.c
 +++ b/gcc/function.c
 @@ -6238,6 +6238,7 @@ thread_prologue_and_epilogue_insns (void)
   }
 /* Now duplicate the tails.  */
 if (!bitmap_empty_p (bb_tail))
 + {
   FOR_EACH_BB_REVERSE_FN (bb, cfun)
 {
   basic_block copy_bb, tbb;
 @@ -6304,6 +6305,17 @@ thread_prologue_and_epilogue_insns (void)
   if (bitmap_empty_p (bb_tail))
 break;
 }
 +
 + /* Basic blocks may have been changed.  Merge each basic block
 +with its successor if possible.  */
 + FOR_EACH_BB_FN (bb, cfun)
 +   if (single_succ_p (bb))
 + {
 +   basic_block succ_bb = single_succ (bb);
 +   if (can_merge_blocks_p (bb, succ_bb))
 + merge_blocks (bb, succ_bb);
 + }
 + }
   }
  
  fail_shrinkwrap:
 
 seems to work.

We have cfg_cleanup for this, no?

[Bug ipa/60518] [4.9 Regression] ICE: in verify_loop_structure, at cfgloop.c:1647

2014-03-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60518

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-03-14
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
   Target Milestone|--- |4.9.0
 Ever confirmed|0   |1

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
Confirmed, mine.


[Bug fortran/60522] New: WHERE construct causes an ICE in gfc_trans_where_2

2014-03-14 Thread roger.ferrer at bsc dot es
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60522

Bug ID: 60522
   Summary: WHERE construct causes an ICE in gfc_trans_where_2
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: roger.ferrer at bsc dot es

Hi,

the following code

! -- test.f90
subroutine foo(a, b)
   implicit none
   integer, dimension(:), intent(inout) :: a
   integer, dimension(:), intent(in) :: b

   where (b(:)  0)
  a(lbound(a, 1):ubound(a, 1)) = b(lbound(b, 1):ubound(b, 1)) * b(lbound(b,
1):ubound(b, 1))
   end where
end subroutine foo
! -- end of test.f90

causes an ICE if optimization is enabled:

$ gfortran -c test.f90 -O
test.f90: In function ‘foo’:
test.f90:6:0: internal compiler error: in gfc_trans_where_2, at
fortran/trans-stmt.c:4550
where (B(:)  0)
 ^
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-4.8/README.Bugs for instructions.

The problem goes away if the assignment is of the (equivalent) form:

 a(:) = b(:) * b(:)

or

 a = b * b

or if optimization is disabled.

Kind regards,

[Bug libstdc++/60521] std::lock_guard ignores adopt_lock strategy

2014-03-14 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60521

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2014-03-14
 Ever confirmed|0   |1
   Severity|blocker |normal

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
(In reply to Sergei Turchanov from comment #0)
   lock_guard(mutex_type __m, adopt_lock_t) : _M_device(__m)
   { } // calling thread owns mutex

Where in that code do you think it locks the mutex?


[Bug target/60520] stack adjustment are not merged anymore

2014-03-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60520

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||jakub at gcc dot gnu.org
 Resolution|--- |FIXED

--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org ---
Furthermore, it is already fixed since r208551.


[Bug lto/59468] [4.9 Regression] ICE on invalid C++ code with LTO in gimple_get_virt_method_for_binfo, at gimple-fold.c:3224

2014-03-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59468

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #12 from Jakub Jelinek jakub at gcc dot gnu.org ---
Seems to be fixed now.  Please reopen if there is some reason you wanted to
keep this open.


[Bug target/60520] stack adjustment are not merged anymore

2014-03-14 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60520

--- Comment #7 from Uroš Bizjak ubizjak at gmail dot com ---
(In reply to Jakub Jelinek from comment #6)
 Furthermore, it is already fixed since r208551.

Indeed, the fix for PR57320 also fixed this one.

[Bug c/60523] New: Warning flag for octal literals

2014-03-14 Thread david at westcontrol dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60523

Bug ID: 60523
   Summary: Warning flag for octal literals
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: david at westcontrol dot com

It would be nice if there were a warning flag that triggered on octal literals. 

Octal literals are rarely used in modern C and C++ code, but can easily be
introduced by mistake - int x = 050; appears at first reading to set x to 50,
but in C and C++ the leading 0 means it is interpreted as octal and therefore
sets x to 40 (decimal).

As octal literals are seldom useful, and often confusing or accidental, they
are banned by coding standards like MISRA.  But as they are part of the
language defined by the C and C++ standards, and are used in some existing
code, they obviously cannot be removed.  As a compromise, I would like to
propose the introduction of a warning flags -Woctal which would produce a
diagnostic message when a literal is interpreted as an octal number.  Of
preference, this would be included in -Wextra (it probably should not be in
-Wall, since octal literals are valid C and C++).


[Bug c/60523] Warning flag for octal literals

2014-03-14 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60523

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
Octal literals are very useful for expressing unix/posix file modes like 0777
or even 0666.  So having the warning part of eith -Wall or -Wextra does not
make sense.


[Bug fortran/60522] WHERE construct causes an ICE in gfc_trans_where_2

2014-03-14 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60522

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-03-14
 CC||tkoenig at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Confirmed. The ICE goes away when compiling with -fno-frontend-optimize. The
test compiles with r171100 (2011-03-17) and gives the ICE with r171653
(2011-03-29).
The changes of frontend-passes.c in this range are r171653, r171575, and
r171207.


[Bug ipa/60518] [4.9 Regression] ICE: in verify_loop_structure, at cfgloop.c:1647

2014-03-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60518

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
Ok, so it's branch_prob()s call of split_block that splits the common latch of
loops 1 and 2


 bb 3:  (header loop 1)

 bb 4:  (header loop 2, latch loop 2 and 1)
  _2 = fn1 ();
  if (_2 != 0)
goto bb 4;
  else
goto bb 3;

the cfghook adjusts the latch of loop 2 properly (bb4s loop father is 2)
but fails to notice that bb4 is also the latch of loop 1 ... so this
CFG hook loop handling only handles this correctly if we have simple
latches (because there the latch always belongs to its loop).

Fix:


Index: gcc/cfghooks.c
===
--- gcc/cfghooks.c  (revision 208536)
+++ gcc/cfghooks.c  (working copy)
@@ -510,9 +510,13 @@ split_block (basic_block bb, void *i)

   if (current_loops != NULL)
 {
+  edge_iterator ei;
+  edge e;
   add_bb_to_loop (new_bb, bb-loop_father);
-  if (bb-loop_father-latch == bb)
-   bb-loop_father-latch = new_bb;
+  /* Identify all loops bb may have been the latch of and adjust them.  */
+  FOR_EACH_EDGE (e, ei, new_bb-succs)
+   if (e-dest-loop_father-latch == bb)
+ e-dest-loop_father-latch = new_bb;
 }

   res = make_single_succ_edge (bb, new_bb, EDGE_FALLTHRU);


[Bug target/59396] [avr] Wrong warning with ISR() and -flto

2014-03-14 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59396

--- Comment #9 from Georg-Johann Lay gjl at gcc dot gnu.org ---
Author: gjl
Date: Fri Mar 14 09:27:19 2014
New Revision: 208562

URL: http://gcc.gnu.org/viewcvs?rev=208562root=gccview=rev
Log:
PR target/59396
* config/avr/avr.c (avr_set_current_function): Pass function name
through default_strip_name_encoding before sanity checking instead
of skipping the first char of the assembler name.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/avr/avr.c


[Bug target/59396] [avr] Wrong warning with ISR() and -flto

2014-03-14 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59396

--- Comment #10 from Georg-Johann Lay gjl at gcc dot gnu.org ---
Author: gjl
Date: Fri Mar 14 09:41:51 2014
New Revision: 208564

URL: http://gcc.gnu.org/viewcvs?rev=208564root=gccview=rev
Log:
Backport from 2014-03-14 trunk r208562.
PR target/59396
* config/avr/avr.c (avr_set_current_function): Pass function name
through default_strip_name_encoding before sanity checking instead
of skipping the first char of the assembler name.


Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/config/avr/avr.c


[Bug ada/60504] [4.9 regression] many Ada testsuite regressions with gcc-4.9-20140309 on armv5tel-linux-gnueabi

2014-03-14 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60504

--- Comment #3 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
 Nothing obvious stands out.  I presume that exceptions cannot be caught?

OK, it's presumably http://gcc.gnu.org/ml/gcc/2013-12/msg00157.html but no ARM
maintainer has stepped in yet. :-(  Try this:

Index: config/arm/arm.h
===
--- config/arm/arm.h(revision 208561)
+++ config/arm/arm.h(working copy)
@@ -937,13 +937,13 @@ extern int arm_arch_crc;

 #ifndef ARM_TARGET2_DWARF_FORMAT
 #define ARM_TARGET2_DWARF_FORMAT DW_EH_PE_pcrel
+#endif

 /* ttype entries (the only interesting data references used)
use TARGET2 relocations.  */
 #define ASM_PREFERRED_EH_DATA_FORMAT(code, data) \
   (((code) == 0  (data) == 1  ARM_UNWIND_INFO) ? ARM_TARGET2_DWARF_FORMAT
\
   : DW_EH_PE_absptr)
-#endif

 /* The native (Norcroft) Pascal compiler for the ARM passes the static chain
as an invisible last argument (possible since varargs don't exist in


[Bug target/59396] [avr] Wrong warning with ISR() and -flto

2014-03-14 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59396

--- Comment #11 from Georg-Johann Lay gjl at gcc dot gnu.org ---
Author: gjl
Date: Fri Mar 14 09:52:07 2014
New Revision: 208565

URL: http://gcc.gnu.org/viewcvs?rev=208565root=gccview=rev
Log:
Backport from 2014-03-14 trunk r208562.
PR target/59396
* config/avr/avr.c (avr_set_current_function): Pass function name
through default_strip_name_encoding before sanity checking instead
of skipping the first char of the assembler name.


Modified:
branches/gcc-4_7-branch/gcc/ChangeLog
branches/gcc-4_7-branch/gcc/config/avr/avr.c


[Bug debug/60524] New: Typedef information bypassed in dwarf2 function parameter information when it is 'const'

2014-03-14 Thread wpk at culm dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60524

Bug ID: 60524
   Summary: Typedef information bypassed in dwarf2 function
parameter information when it is 'const'
   Product: gcc
   Version: 4.8.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: debug
  Assignee: unassigned at gcc dot gnu.org
  Reporter: wpk at culm dot net

For following code:


typedef unsigned char Bar[12];
void foo(Bar *bar) {}
void fooconst(const Bar *bar) {}

compiled with gcc -gdwarf-2 -c, readelf -wi shows the foolowing dwarf-2 info:


For typedef Bar:

 12d: Abbrev Number: 2 (DW_TAG_typedef)
2e   DW_AT_name: Bar
32   DW_AT_decl_file   : 1
33   DW_AT_decl_line   : 1
34   DW_AT_type: 0x38
 138: Abbrev Number: 3 (DW_TAG_array_type)
39   DW_AT_type: 0x4f
3d   DW_AT_sibling : 0x48



For 'foo' function:

 156: Abbrev Number: 6 (DW_TAG_subprogram)
(...)
58   DW_AT_name: foo
(...)
 278: Abbrev Number: 7 (DW_TAG_formal_parameter)
79   DW_AT_name: bar
(...)
7f   DW_AT_type: 0x87
(...)
 187: Abbrev Number: 8 (DW_TAG_pointer_type)
88   DW_AT_byte_size   : 8
89   DW_AT_type: 0x2d

This points to DW_TAG_typedef for 'Bar'




But for 'fooconst':

 18d: Abbrev Number: 9 (DW_TAG_subprogram)
(...)
8f   DW_AT_name: (indirect string, offset: 0x5c): fooconst
(...)
 2af: Abbrev Number: 7 (DW_TAG_formal_parameter)
b0   DW_AT_name: bar
(..)
b6   DW_AT_type: 0xbe
(..)
 1be: Abbrev Number: 8 (DW_TAG_pointer_type)
bf   DW_AT_byte_size   : 8
c0   DW_AT_type: 0x38

This points directly to unsigned char[12], completely bypassing typedef Bar
info. 


GCC version info:
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
4.8.1-10ubuntu9' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs
--enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.8 --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls
--with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin
--with-system-zlib --disable-browser-plugin --enable-java-awt=gtk
--enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre
--enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686
--with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu9)


[Bug target/59396] [avr] Wrong warning with ISR() and -flto

2014-03-14 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59396

Georg-Johann Lay gjl at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P4  |P5
 Status|NEW |RESOLVED
  Known to work||4.8.1, 4.8.3
Version|4.8.3   |4.8.2
 Resolution|--- |FIXED
   Target Milestone|--- |4.8.3
  Known to fail||4.8.2

--- Comment #12 from Georg-Johann Lay gjl at gcc dot gnu.org ---
Fixed in 4.8.3.


[Bug c++/60517] warning/error for taking address of member of a temporary object

2014-03-14 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60517

--- Comment #4 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
(In reply to Marc Glisse from comment #3)
 (In reply to Manuel López-Ibáñez from comment #2)
  (In reply to Marc Glisse from comment #1)
   I see in the dump:
   
 # .MEM_4 = VDEF .MEM_8
 D.2272 ={v} {CLOBBER};
 # VUSE .MEM_4
 _5 = MEM[(doubleD.39 *)D.2272];
   
   which looks like something we could warn about in the middle-end.
  
  Could you elaborate? My middle-end foo is not as good as it used to be.
 
 _5 = MEM[(doubleD.39 *)D.2272];
 says we are reading something inside variable D.2272. And right in the
 previous instruction:
 D.2272 ={v} {CLOBBER};
 we clobbered the content of that variable, so what we are reading is
 nonsense. These clobbers are specifically added to indicate when variables
 die (like your temporary).

Where is the clobber added? The closer to the FE that we warn, the better
diagnostic we can generate. I'm not very concerned about maybe-branches, since 
I expect most bugs to appear in temporaries created in the middle of
expressions (such as a.getB().getA().x), where no branching occurs.

[Bug c/60523] Warning flag for octal literals

2014-03-14 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60523

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||mpolacek at gcc dot gnu.org

--- Comment #3 from Marek Polacek mpolacek at gcc dot gnu.org ---
I agree with Andrew - if we are ever to implement -Woctal, making it a part of
-Wextra doesn't sound sensible.  Especially with -Werror it'd be a pain.


[Bug lto/60461] [4.9 Regression] LTO linking error at -Os (and above) on x86_64-linux-gnu

2014-03-14 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60461

--- Comment #6 from Martin Jambor jamborm at gcc dot gnu.org ---
Author: jamborm
Date: Fri Mar 14 10:49:05 2014
New Revision: 208566

URL: http://gcc.gnu.org/viewcvs?rev=208566root=gccview=rev
Log:
2014-03-13  Martin Jambor  mjam...@suse.cz

PR lto/60461
* ipa-prop.c (ipa_modify_call_arguments): Fix iteration condition
and simplify it.

testsuite/
* gcc.dg/lto/pr60461_0.c: New test.


Added:
trunk/gcc/testsuite/gcc.dg/lto/pr60461_0.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/ipa-prop.c
trunk/gcc/testsuite/ChangeLog


[Bug c/60523] Warning flag for octal literals

2014-03-14 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60523

--- Comment #4 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
I would suggest that you implement this as a plugin. Plugins are particularly
useful for enforcing this type of coding standards. If you make a generally
useful plugin like one enforcing MISRA standards, it could be distributed with
GCC in order to serve as a testcase for the plugins framework.

[Bug target/60525] New: [4.9 Regression] ICE: in final_scan_insn, at final.c:2952

2014-03-14 Thread trippels at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60525

Bug ID: 60525
   Summary: [4.9 Regression]  ICE: in final_scan_insn, at
final.c:2952
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: trippels at gcc dot gnu.org

markus@x4 libgcc % cat test.i
typedef struct
{
  long w[2];
} UINT128;
extern UINT128 a[];
int b, c, f, g, h, i, l, m, o, p, q;
double d;
UINT128 j, k, t;
long n, r;
unsigned long s;
fn1 (UINT128 *p1, UINT128 p2, UINT128 p3)
{
  int e;
  if (p2.w[1])
p1-w[0] = p3.w[0];
  e = d + p2.w[0];
  if (p3.w[1])
c = e;
  p1-w[1] = b;
}

fn2 ()
{
  UINT128 u;
  fn1 (t, j, k);
  u = a[l];
  int v, w;
  o = t.w[0]  1;
  w = u.w[1]  32;
  n = t.w[0] * u.w[0];
  q = r;
  r = r + s + (n  32);
  v = q + r  1;
  r = o * u.w[0];
  q = o * w;
  r = r + s + (n  32);
  m = q + r;
  p = u.w[1]  32;
  r = u.w[1];
  s = 0;
  r = r + t.w[1] + n;
  i = v;
  o = t.w[0];
  h = k.w[1] * k.w[0];
  g = j.w[1];
  f = j.w[0];
}

markus@x4 libgcc % gcc -march=amdfam10 -O2 -c test.i
test.i: In function ‘fn2’:
test.i:47:1: error: could not split insn
 }
 ^
(insn:TI 31 30 32 5 (parallel [
(set (reg:DF 22 xmm1 [orig:142 D.1904 ] [142])
(float:DF (mem/c:DI (plus:DI (reg/f:DI 7 sp)
(const_int -16 [0xfff0])) [7 %sfp+-16
S8 A64])))
(clobber (mem/c:DI (plus:DI (reg/f:DI 7 sp)
(const_int -8 [0xfff8])) [0  S8 A64]))
]) test.i:16 219 {*floatdidf2_sse_with_temp}
 (nil))
test.i:47:1: internal compiler error: in final_scan_insn, at final.c:2952
0x82e4c8 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
../../gcc/gcc/rtl-error.c:109
0x6a9d5a final_scan_insn(rtx_def*, _IO_FILE*, int, int, int*)
../../gcc/gcc/final.c:2952
0x6a9fb6 final(rtx_def*, _IO_FILE*, int)
../../gcc/gcc/final.c:2023
0x6aa1e5 rest_of_handle_final
../../gcc/gcc/final.c:4427
0x6aa1e5 execute
../../gcc/gcc/final.c:4502
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.
{standard input}: Assembler messages:
{standard input}: Error: open CFI at the end of file; missing .cfi_endproc
directive

[Bug target/60525] [4.9 Regression] ICE: in final_scan_insn, at final.c:2952

2014-03-14 Thread trippels at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60525

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 CC||rth at gcc dot gnu.org

--- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Started with r208556.


[Bug c/60523] Warning flag for octal literals

2014-03-14 Thread david at westcontrol dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60523

--- Comment #5 from David Brown david at westcontrol dot com ---
I agree that warnings to match something like the MISRA coding standards would
be best done as a plugin.

But I believe that in this case, warning on octal literals would be quite a
small addition to the main gcc code.  I am not familiar enough with the gcc
source code to implement it myself (like many people, I blame lack of time) - I
therefore registered this enhancement request in the hope that someone was /is/
familiar with this part of gcc would be able to make the change quickly and
easily.


[Bug c++/60517] warning/error for taking address of member of a temporary object

2014-03-14 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60517

--- Comment #5 from Marc Glisse glisse at gcc dot gnu.org ---
(In reply to Manuel López-Ibáñez from comment #4)
 Where is the clobber added?

front-end, I expect (sorry, I'm trying to get something to work on windows and
don't have my usual sources at hand).

 The closer to the FE that we warn, the better
 diagnostic we can generate.

Then do it in the front-end and ignore my message ;-)

 I'm not very concerned about maybe-branches, since 
 I expect most bugs to appear in temporaries created in the middle of
 expressions (such as a.getB().getA().x), where no branching occurs.

An exemple I have in mind is (pseudo):
ref id(ref x){return x;}
ref fun(){return id(temporary);}
where the function call hides that we are returning a reference to a temporary
(id could return a reference to a global object, for all fun knows) and we know
more after inlining (I need id inlined into fun, and either fun inlined into
something that uses its returned ref (so my previous technique works) or I
would need a different (middle-end) warning that detects return local_var,
which seems even easier except that it would give a lot of duplicates with
front-end warnings).

[Bug c/60484] [4.7/4.8/4.9 Regression] -fdump-rtl-expand and attribute optimize gives incorrect dump file path

2014-03-14 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60484

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-03-14
 CC||mpolacek at gcc dot gnu.org
Summary|-fdump-rtl-expand and   |[4.7/4.8/4.9 Regression]
   |attribute optimize gives|-fdump-rtl-expand and
   |incorrect dump file path|attribute optimize gives
   ||incorrect dump file path
 Ever confirmed|0   |1

--- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org ---
Confirmed.  GCC 4.4 works.


[Bug target/60525] [4.9 Regression] ICE: in final_scan_insn, at final.c:2952

2014-03-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60525

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P1
   Target Milestone|--- |4.9.0


[Bug lto/60461] [4.9 Regression] LTO linking error at -Os (and above) on x86_64-linux-gnu

2014-03-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60461

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #7 from Richard Biener rguenth at gcc dot gnu.org ---
Fixed.


[Bug ipa/60518] [4.9 Regression] ICE: in verify_loop_structure, at cfgloop.c:1647

2014-03-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60518

--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Fri Mar 14 12:54:25 2014
New Revision: 208567

URL: http://gcc.gnu.org/viewcvs?rev=208567root=gccview=rev
Log:
2014-03-14  Richard Biener  rguent...@suse.de

PR middle-end/60518
* cfghooks.c (split_block): Properly adjust all loops the
block was a latch of.

* g++.dg/pr60518.C: New testcase.

Added:
trunk/gcc/testsuite/g++.dg/pr60518.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/cfghooks.c
trunk/gcc/testsuite/ChangeLog


[Bug ipa/60518] [4.9 Regression] ICE: in verify_loop_structure, at cfgloop.c:1647

2014-03-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60518

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ice-checking,
   ||ice-on-valid-code
   Priority|P3  |P1
 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
Fixed.


[Bug middle-end/60484] [4.7/4.8/4.9 Regression] -fdump-rtl-expand and attribute optimize gives incorrect dump file path

2014-03-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60484

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P2
  Component|c   |middle-end
   Target Milestone|--- |4.7.4


[Bug middle-end/60484] [4.7/4.8/4.9 Regression] -fdump-rtl-expand and attribute optimize gives incorrect dump file path

2014-03-14 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60484

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
(In reply to Marek Polacek from comment #1)
 Confirmed.  GCC 4.4 works.

Well, seems 4.4 puts the dump file in $PWD.


[Bug middle-end/60484] [4.7/4.8/4.9 Regression] -fdump-rtl-expand and attribute optimize gives incorrect dump file path

2014-03-14 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60484

--- Comment #3 from Marek Polacek mpolacek at gcc dot gnu.org ---
Anyway, this is because finish_options is called for every optimize attribute
(handle_optimize_attribute-parse_optimize_attribute-decode_options-finish_options)
+ one more time for command line options and every time it adds the directory
prefix.  I guess we should add the directory prefix just once.


[Bug ipa/58721] [4.9 Regression] The subroutine perdida is no longer inlined in fatigue.f90

2014-03-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58721

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #19 from Jakub Jelinek jakub at gcc dot gnu.org ---
Created attachment 32347
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32347action=edit
gcc49-pr58721.patch

Untested patch.


[Bug fortran/60526] New: [4.7/4.8/4.9 Regression] Accepts-invalid: Variable name same as type name

2014-03-14 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60526

Bug ID: 60526
   Summary: [4.7/4.8/4.9 Regression] Accepts-invalid: Variable
name same as type name
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: janus at gcc dot gnu.org

The following program is supposed to be invalid:

type X
end type

type(X) :: X

end


4.6 rejects it with:

type(X) :: X
1
Error: Symbol 'x' at (1) cannot have a type


4.7, 4.8 and trunk however accept it happily. I think that is yet another
regression caused by the constructor implementation in 4.7.


[Bug target/60525] [4.9 Regression] ICE: in final_scan_insn, at final.c:2952

2014-03-14 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60525

Richard Henderson rth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-03-14
   Assignee|unassigned at gcc dot gnu.org  |rth at gcc dot gnu.org
 Ever confirmed|0   |1


[Bug fortran/60526] [4.7/4.8/4.9 Regression] Accepts-invalid: Variable name same as type name

2014-03-14 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60526

--- Comment #1 from janus at gcc dot gnu.org ---
See also
https://groups.google.com/forum/?fromgroups#!topic/comp.lang.fortran/ZZ0iPFE7TFk
for a discussion of ifort's behavior (which is the other way round than
gfortran's: it used to accept it but now rejects it).


[Bug c++/53711] Wunused-function should warn for functions in the unnamed namespace

2014-03-14 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53711

--- Comment #3 from Jason Merrill jason at gcc dot gnu.org ---
Author: jason
Date: Fri Mar 14 15:20:28 2014
New Revision: 208569

URL: http://gcc.gnu.org/viewcvs?rev=208569root=gccview=rev
Log:
PR c++/53711
* d++.dg/warn/anonymous-namespace-6.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-6.C


[Bug c++/60517] warning/error for taking address of member of a temporary object

2014-03-14 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60517

--- Comment #6 from Marc Glisse glisse at gcc dot gnu.org ---
(In reply to Marc Glisse from comment #5)
 I would need a different (middle-end) warning that
 detects return local_var,

To confirm this, I looked at the last dangling reference I debugged, recompiled
it with -O3 -fkeep-inline-functions, and a grep for return  in the
.optimized dump showed:
  return one;
  return one;
  return D.495451.c_;
(where one is a global variable, but D.495451 is a local variable)
so even this trivial version of the warning would be useful.


[Bug middle-end/60484] [4.7/4.8/4.9 Regression] -fdump-rtl-expand and attribute optimize gives incorrect dump file path

2014-03-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60484

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org ---
Created attachment 32348
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32348action=edit
gcc49-pr60484.patch

Untested fix.

Alternatively, e.g. finish_options could guard it also with  loc ==
UNKNOWN_LOCATION (for calls other than the first one loc should be some real
locus).


[Bug c/60527] New: Incorrectly removed if statement while doing int arithmetics

2014-03-14 Thread nicklas.ekstrand at sonymobile dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60527

Bug ID: 60527
   Summary: Incorrectly removed if statement while doing int
arithmetics
   Product: gcc
   Version: 4.6.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: nicklas.ekstrand at sonymobile dot com

Created attachment 32349
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32349action=edit
Test program modtest.c

In the following code:

static int getZ() {
int tmp;
Z = Z * A + B;
tmp = Z;
if (tmp == INT_MIN)
tmp++;
if (tmp  0)
tmp = -tmp;
return tmp % MEMSIZE;
}

The if-statement tmp==INT_MIN is optimized away when using -O2 or higher, e.g.,

$ gcc -Wall -Wextra -g -O2 modtest.c -o pc_modtest -lrt
$ ./pc_modtest 
arr=0x7fc1608be010
i=0 A=945 B=411
z1=231029 z2=-7483648
Segmentation fault

When using -O0 the problem doesn't happen and the program will not cause a
segmentation fault.


[Bug middle-end/60484] [4.7/4.8/4.9 Regression] -fdump-rtl-expand and attribute optimize gives incorrect dump file path

2014-03-14 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60484

--- Comment #5 from Marek Polacek mpolacek at gcc dot gnu.org ---
I've just regtested a similar patch, so it looks good.


[Bug c/60527] Incorrectly removed if statement while doing int arithmetics

2014-03-14 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60527

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
You have an integer overflow in your code which is why the comparisons are
being removed.

if (tmp == INT_MIN)

Can never happen because B is always a positive constant (411), so tmp has a
range of [INT_MIN+411. INT_MAX].  The only way to get INT_MIN is if you had an
overflow and overflows in C are undefined.


[Bug middle-end/60484] [4.7/4.8/4.9 Regression] -fdump-rtl-expand and attribute optimize gives incorrect dump file path

2014-03-14 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60484

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |mpolacek at gcc dot 
gnu.org


[Bug target/60520] stack adjustment are not merged anymore

2014-03-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60520

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 CC||rth at gcc dot gnu.org
 Resolution|FIXED   |---

--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org ---
Supposedly csa pass could remove sp additions followed by setting of sp to
something not based on sp?


[Bug rtl-optimization/60508] [4.8/4.9 Regression] internal compiler error: in lra_set_insn_recog_data, at lra.c:1082

2014-03-14 Thread vmakarov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60508

--- Comment #3 from Vladimir Makarov vmakarov at gcc dot gnu.org ---
Author: vmakarov
Date: Fri Mar 14 16:34:57 2014
New Revision: 208570

URL: http://gcc.gnu.org/viewcvs?rev=208570root=gccview=rev
Log:
2014-03-14  Vladimir Makarov  vmaka...@redhat.com

PR rtl-optimization/60508
* lra-constraints.c (get_reload_reg): Add new parameter
in_subreg_p.
(process_addr_reg, simplify_operand_subreg, curr_insn_transform):
Pass the new parameter values.

2014-03-14  Vladimir Makarov  vmaka...@redhat.com

PR rtl-optimization/60508
* gcc.target/i386/pr60508.c: New.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr60508.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/lra-constraints.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/60517] warning/error for taking address of member of a temporary object

2014-03-14 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60517

--- Comment #7 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
(In reply to Marc Glisse from comment #6)
 (In reply to Marc Glisse from comment #5)
  I would need a different (middle-end) warning that
  detects return local_var,
 
 To confirm this, I looked at the last dangling reference I debugged,
 recompiled it with -O3 -fkeep-inline-functions, and a grep for return  in
 the .optimized dump showed:
   return one;
   return one;
   return D.495451.c_;
 (where one is a global variable, but D.495451 is a local variable)
 so even this trivial version of the warning would be useful.

To avoid duplicates, the front-end could just return something else, like NULL,
when it detects this case (I guess the behavior is undefined and we can do
whatever we want, no?).

[Bug target/60528] New: MIPS GCC puts out complex constant incorrectly when in big-endian mode

2014-03-14 Thread sje at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60528

Bug ID: 60528
   Summary: MIPS GCC puts out complex constant incorrectly when in
big-endian mode
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: sje at gcc dot gnu.org
CC: rsandifo at gcc dot gnu.org
Target: mips-*-*

The included test program prints out:

x = 0.634964 1.298458
x = inf inf

on MIPS instead of:

x = 0.634964 1.298458
x = 0.182506 1.163916

To reproduce the problem you need to compile the program with no optimization
(-O0) and in big-endian mode.  Little endian mode seems fine.  When I compare
the assembly language output to an earlier 4.8.1 GCC, the latest GCC output
contains the following code to store the complex constant passed in to csinh:

$LC0:
.word1071927711
.word3624173458
.word1073006203
.word1962331215

Earlier GCC compilers that worked contained:

$LC0:
.word1071927711
.word-670793838
.word1073006203
.word1962331215


Test case:

#include stdio.h
#include complex.h
#include math.h

int main()
{
double complex x;
x = 0.63496391478473613 + 1.2984575814159773I;
printf(x = %f %f\n, creal(x), cimag(x));
x = csinh(x);
printf(x = %f %f\n, creal(x), cimag(x));
return 0;
}


[Bug target/60525] [4.9 Regression] ICE: in final_scan_insn, at final.c:2952

2014-03-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60525

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
It also breaks nearly every test in SPEC 2k and 2k6 ;)


[Bug ipa/58721] [4.9 Regression] The subroutine perdida is no longer inlined in fatigue.f90

2014-03-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58721

--- Comment #20 from Jakub Jelinek jakub at gcc dot gnu.org ---
Unfortunately the patch regresses abi_check in libstdc++, libstdc++.so.6 now
because of the patch exports
_ZNSt12system_errorC1ESt10error_codeRKSs@@GLIBCXX_3.4.11
_ZNSt12system_errorC2ESt10error_codeRKSs@@GLIBCXX_3.4.11
symbols.
This is caused by wastly different inlining decisions (and the decisions don't
look like an improvement to me) on thread.cc.
Debugging this, I'm seeing this is caused by Honza's predict.c changes.
E.g. quite often we have tree_predict_by_opcode called on
__gthrw___pthread_key_create != 0.  When we call expr_expected_value_1 on
this,
it returns a NE_EXPR (__gthrw___pthread_key_create is weakref), but with
TREE_CONSTANT set on it.  That is reasonable, the comparison will be either
always true, or always false, but without explicit __builtin_expect from the
user I actually don't see a reason why we should predict it as always true.

So, I wonder if we shouldn't do on top of the #c19 patch:
--- gcc/predict.c.jj2014-03-14 13:16:15.0 +0100
+++ gcc/predict.c2014-03-14 17:49:11.686411889 +0100
@@ -2066,7 +2066,7 @@ tree_predict_by_opcode (basic_block bb)
   visited = BITMAP_ALLOC (NULL);
   val = expr_expected_value_1 (boolean_type_node, op0, cmp, op1, visited,
predictor);
   BITMAP_FREE (visited);
-  if (val  TREE_CONSTANT (val))
+  if (val  TREE_CODE (val) == INTEGER_CST)
 {
   if (predictor == PRED_BUILTIN_EXPECT)
 {
That change seems to slightly improve the inlining decisions on thread.ii, e.g.
_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.part.1.constprop.11 seems to be
inlined again, but _ZNSt12system_errorC1ESt10error_codeRKSs and
_ZNSt12system_errorC2ESt10error_codeRKSs are still no longer inlined.
Comparing to gcc with all the patches but all the predict.c #c19 and the above
bits reverted, I see that (looking at -m32 -O2 ...) the
_ZNSt12system_errorC1ESt10error_codeRKSs function (the other symbol is an alias
to it) is 601 bytes long and
_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE caller
406 bytes long with the predict.c changes and
_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE is 889 bytes
long with the predict.c changes reverted (the
_ZNSt12system_errorC1ESt10error_codeRKSs function is inlined then).
So, size wise it is a win to inline it, but not significant, and the function
is in any case larger than the caller.

Honza, your thoughts on this?


[Bug c++/60517] warning/error for taking address of member of a temporary object

2014-03-14 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60517

--- Comment #8 from Marc Glisse glisse at gcc dot gnu.org ---
(In reply to Manuel López-Ibáñez from comment #7)
 To avoid duplicates, the front-end could just return something else, like
 NULL, when it detects this case (I guess the behavior is undefined and we
 can do whatever we want, no?).

I guess... Then we might as well introduce a call to __builtin_unreachable
right before the return, at the same time as we replace the return value.

[Bug c/60523] Warning flag for octal literals

2014-03-14 Thread joseph at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60523

--- Comment #6 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
Octal literals are also used in macro definitions from system headers, so 
care would be needed that a warning doesn't apply to those.

Such a warning should of course not apply to 0 (and maybe more generally 
should not apply to any octal constant consisting of some number of 
leading 0s followed by at most one nonzero digit, as those have the same 
value whether interpreted as octal or as decimal).


[Bug target/60525] [4.9 Regression] ICE: in final_scan_insn, at final.c:2952

2014-03-14 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60525

--- Comment #3 from Richard Henderson rth at gcc dot gnu.org ---
Created attachment 32350
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32350action=edit
proposed patch

In the description for the patch in question, I mentioned how during
stage1 we could clean up all these patterns to rely on LRA.  The fact
that this pr was filed immediately suggests that the current setup is
quite difficult to follow.

Cleaning this up now instead of waiting for stage1 would seem to be
the way to make sure we get all the cases right.


[Bug fortran/60529] New: internal compiler error with allocatable sub-component

2014-03-14 Thread carlos.a.cruz at nasa dot gov
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60529

Bug ID: 60529
   Summary: internal compiler error with allocatable sub-component
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: carlos.a.cruz at nasa dot gov

Using the following compiler release:

GNU Fortran (GCC) 4.9.0 20140309 (experimental)

on the following reproducer:

---
module T_mod
  implicit none
  type :: TS
integer, allocatable :: i(:)
  end type TS
  type :: T
! The following line causes an internal compiler error.
type (TS) :: s(1) 
! The following line does not:
!type (TS), allocatable :: s(:)
  end type T
contains
  subroutine insert(this)
class(T) :: this
  end subroutine insert
end module T_mod
---

yields an internal compiler error:

repro.F90: In function ‘__final_t_mod_T’:
repro.F90:19:0: internal compiler error: in gfc_conv_descriptor_data_get, at
fortran/trans-array.c:145
 end module T_mod
 ^
0x511048 ???
../sysdeps/x86_64/elf/start.S:113


I am running on a Linux cluster:

Linux discover28 2.6.32.54-0.3-default #1 SMP 2012-01-27 17:38:56 +0100 x86_64
x86_64 x86_64 GNU/Linux

Note that the internal compiler error does not occur with two earlier releases
of gfortran:

GNU Fortran (GCC) 4.9.0 20140105 (experimental)

GNU Fortran (GCC) 4.8.1

[Bug middle-end/60484] [4.7/4.8/4.9 Regression] -fdump-rtl-expand and attribute optimize gives incorrect dump file path

2014-03-14 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60484

--- Comment #6 from Marek Polacek mpolacek at gcc dot gnu.org ---
Author: mpolacek
Date: Fri Mar 14 17:58:52 2014
New Revision: 208571

URL: http://gcc.gnu.org/viewcvs?rev=208571root=gccview=rev
Log:
PR middle-end/60484
* common.opt (dump_base_name_prefixed): New Variable.
* opts.c (finish_options): Don't prepend directory to x_dump_base_name
if x_dump_base_name_prefixed is already set, set it at the end.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/common.opt
trunk/gcc/opts.c


[Bug c++/60517] warning/error for taking address of member of a temporary object

2014-03-14 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60517

Marc Glisse glisse at gcc dot gnu.org changed:

   What|Removed |Added

 CC||glisse at gcc dot gnu.org

--- Comment #9 from Marc Glisse glisse at gcc dot gnu.org ---
(In reply to Manuel López-Ibáñez from comment #7)
 To avoid duplicates, the front-end could just return something else, like
 NULL, when it detects this case (I guess the behavior is undefined and we
 can do whatever we want, no?).

Actually, for a function that returns a reference, we may also want to warn if
we detect that it is returning NULL. And a function returning a pointer could
be marked returns_nonnull. In both cases we would be introducing a new warning,
more confusing than a duplicate. But there are probably small variations on
this idea that would work.

[Bug middle-end/60484] [4.7/4.8/4.9 Regression] -fdump-rtl-expand and attribute optimize gives incorrect dump file path

2014-03-14 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60484

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #7 from Marek Polacek mpolacek at gcc dot gnu.org ---
Fixed.


[Bug ipa/58721] [4.9 Regression] The subroutine perdida is no longer inlined in fatigue.f90

2014-03-14 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58721

--- Comment #22 from Jonathan Wakely redi at gcc dot gnu.org ---
(In reply to Jakub Jelinek from comment #20)
 Unfortunately the patch regresses abi_check in libstdc++, libstdc++.so.6 now
 because of the patch exports
 _ZNSt12system_errorC1ESt10error_codeRKSs@@GLIBCXX_3.4.11
 _ZNSt12system_errorC2ESt10error_codeRKSs@@GLIBCXX_3.4.11
 symbols.

Those will not be exported now.


[Bug ipa/58721] [4.9 Regression] The subroutine perdida is no longer inlined in fatigue.f90

2014-03-14 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58721

--- Comment #21 from Jonathan Wakely redi at gcc dot gnu.org ---
Author: redi
Date: Fri Mar 14 18:10:59 2014
New Revision: 208572

URL: http://gcc.gnu.org/viewcvs?rev=208572root=gccview=rev
Log:
PR ipa/58721
* config/abi/pre/gnu.ver (GLIBCXX_3.4.11): Remove unused pattern for
_ZNSt12system_errorC* symbols which are not exported on any target.

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


[Bug target/60525] [4.9 Regression] ICE: in final_scan_insn, at final.c:2952

2014-03-14 Thread trippels at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60525

--- Comment #4 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
(In reply to Richard Henderson from comment #3)
 Created attachment 32350 [details]
 proposed patch
 
 In the description for the patch in question, I mentioned how during
 stage1 we could clean up all these patterns to rely on LRA.  The fact
 that this pr was filed immediately suggests that the current setup is
 quite difficult to follow.
 
 Cleaning this up now instead of waiting for stage1 would seem to be
 the way to make sure we get all the cases right.

Your patch doesn't bootstrap:

/var/tmp/gcc_build_dir/./gcc/xgcc -B/var/tmp/gcc_build_dir/./gcc/
-B/usr/x86_64-pc-linux-gnu/bin/ -B/usr/x86_64-pc-linux-gnu/lib/ -isystem
/usr/x86_64-pc-linux-gnu/include -isystem /usr/x86_64-pc-linux-gnu/sys-include 
  -march=native -O3 -pipe -O2  -march=native -O3 -pipe -DIN_GCC-W -Wall
-Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format -Wstrict-prototypes
-Wmissing-prototypes -Wold-style-definition  -isystem ./include   -fpic
-mlong-double-80 -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector   -fpic
-mlong-double-80 -I. -I. -I../.././gcc -I../../../gcc/libgcc
-I../../../gcc/libgcc/. -I../../../gcc/libgcc/../gcc
-I../../../gcc/libgcc/../include -I../../../gcc/libgcc/config/libbid
-DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS  -DUSE_TLS -o _fixunssfdi.o -MT
_fixunssfdi.o -MD -MP -MF _fixunssfdi.dep -DL_fixunssfdi -c
../../../gcc/libgcc/libgcc2.c -fvisibility=hidden -DHIDE_EXPORTS

../../../gcc/libgcc/libgcc2.c: In function ‘__fixunssfti’:
../../../gcc/libgcc/libgcc2.c:1492:1: error: unrecognizable insn:
 }
 ^
(insn 103 102 36 7 (set (reg:V2DF 22 xmm1 [104])
(vec_merge:V4SF (vec_duplicate:V4SF (float:SF (mem/c:DI (plus:DI
(reg/f:DI 7 sp)
(const_int -16 [0xfff0])) [3 %sfp+-8 S8
A64])))
(reg:V2DF 22 xmm1 [104])
(const_int 1 [0x1]))) ../../../gcc/libgcc/libgcc2.c:1449 -1
 (nil))
../../../gcc/libgcc/libgcc2.c:1492:1: internal compiler error: in extract_insn,
at recog.c:2241
Please submit a full bug report,
with preprocessed source if appropriate

[Bug lto/60530] New: openssh-6.5p1 can't be built with lto - revision 208516

2014-03-14 Thread nheghathivhistha at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60530

Bug ID: 60530
   Summary: openssh-6.5p1 can't be built with lto - revision
208516
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: lto
  Assignee: unassigned at gcc dot gnu.org
  Reporter: nheghathivhistha at gmail dot com

Created attachment 32351
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32351action=edit
Un-reduced preprocessed source file gzipped

The only one object file causing the erro from -o ssh ssh.o readconf.o
clientloop.o sshtty.o sshconnect.o sshconnect1.o sshconnect2.o mux.o
roaming_common.o roaming_client.o is ssh.o.

x86_64-pc-linux-gnu-gcc -o ssh ssh.i -L. -Lopenbsd-compat/ -flto=4
-fuse-linker-plugin -Wl,--as-needed -Wl,-O2 -Wl,-flto -O2 -ggdb -pipe
-march=native -mtune=native -mno-3dnow -mno-sse4.2 -mno-avx -Wl,-z,relro
-Wl,-z,now -Wl,-z,noexecstack -fstack-protector-strong -flto=4
-fuse-linker-plugin -Wl,--as-needed -Wl,-O2 -Wl,-flto -O2 -ggdb -pipe
-march=native -mtune=native -mno-3dnow -mno-sse4.2 -mno-avx -pie -lssh
-lopenbsd-compat  -lssl -lcrypto  -ldl -lutil -lz -lnsl  -lcrypt -lresolv
-lpthread 
umac.c:1193:3: warning: type of 'umac_ctx' does not match original declaration
 } umac_ctx;
   ^
./umac.c:1193:3: note: previously declared here
 } umac_ctx;
   ^
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.0-alpha20140311/../../../../x86_64-pc-linux-gnu/bin/ld:
/tmp/ccKc90pS.ltrans0.ltrans.o: relocation R_X86_64_32 against `.rodata.str1.1'
can not be used when making a shared object; recompile with -fPIC
/tmp/ccKc90pS.ltrans0.ltrans.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status


[Bug lto/60530] openssh-6.5p1 can't be built with lto - revision 208516

2014-03-14 Thread nheghathivhistha at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60530

--- Comment #1 from David Kredba nheghathivhistha at gmail dot com ---
When system libraries are removed, ssh.i file links to ssh file:

x86_64-pc-linux-gnu-gcc -o ssh ssh.i -L. -Lopenbsd-compat/ -flto=4
-fuse-linker-plugin -Wl,--as-needed -Wl,-O2 -Wl,-flto -O2 -ggdb -pipe
-march=native -mtune=native -mno-3dnow -mno-sse4.2 -mno-avx -Wl,-z,relro
-Wl,-z,now -Wl,-z,noexecstack -fstack-protector-strong -flto=4
-fuse-linker-plugin -Wl,--as-needed -Wl,-O2 -Wl,-flto -O2 -ggdb -pipe
-march=native -mtune=native -mno-3dnow -mno-sse4.2 -mno-avx -r -nostdlib

ls -l ssh
-rw-r--r-- 1 root root 129751 Mar 14 19:21 ssh


[Bug lto/60530] openssh-6.5p1 can't be built with lto - revision 208516

2014-03-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60530

--- Comment #2 from H.J. Lu hjl.tools at gmail dot com ---
(In reply to David Kredba from comment #0)
 Created attachment 32351 [details]
 Un-reduced preprocessed source file gzipped
 
 The only one object file causing the erro from -o ssh ssh.o readconf.o
 clientloop.o sshtty.o sshconnect.o sshconnect1.o sshconnect2.o mux.o
 roaming_common.o roaming_client.o is ssh.o.
 
 x86_64-pc-linux-gnu-gcc -o ssh ssh.i -L. -Lopenbsd-compat/ -flto=4
 -fuse-linker-plugin -Wl,--as-needed -Wl,-O2 -Wl,-flto -O2 -ggdb -pipe
 -march=native -mtune=native -mno-3dnow -mno-sse4.2 -mno-avx -Wl,-z,relro
 -Wl,-z,now -Wl,-z,noexecstack -fstack-protector-strong -flto=4
 -fuse-linker-plugin -Wl,--as-needed -Wl,-O2 -Wl,-flto -O2 -ggdb -pipe
 -march=native -mtune=native -mno-3dnow -mno-sse4.2 -mno-avx -pie -lssh
 -lopenbsd-compat  -lssl -lcrypto  -ldl -lutil -lz -lnsl  -lcrypt -lresolv
 -lpthread 
 umac.c:1193:3: warning: type of 'umac_ctx' does not match original
 declaration
  } umac_ctx;
^
 ./umac.c:1193:3: note: previously declared here
  } umac_ctx;
^
 /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.0-alpha20140311/../../../../x86_64-pc-
 linux-gnu/bin/ld: /tmp/ccKc90pS.ltrans0.ltrans.o: relocation R_X86_64_32
 against `.rodata.str1.1' can not be used when making a shared object;
 recompile with -fPIC
 /tmp/ccKc90pS.ltrans0.ltrans.o: error adding symbols: Bad value
 collect2: error: ld returned 1 exit status

When -pie is used, you need to add -fpie.


[Bug c/57821] 'array is too large' error is missing when sizetype overflows

2014-03-14 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57821

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

   What|Removed |Added

  Known to fail||4.9.0

--- Comment #10 from John David Anglin danglin at gcc dot gnu.org ---
On hppa2.0w-hp-hpux11.11 with 4.9.0, the error has changed:

Executing on host: /test/gnu/gcc/objdir/gcc/xgcc -B/test/gnu/gcc/objdir/gcc/
/te
st/gnu/gcc/gcc/gcc/testsuite/gcc.dg/large-size-array-6.c 
-fno-diagnostics-show-
caret -fdiagnostics-color=never   -O2 -S  -o large-size-array-6.s(timeout =
300)
spawn /test/gnu/gcc/objdir/gcc/xgcc -B/test/gnu/gcc/objdir/gcc/
/test/gnu/gcc/gc
c/gcc/testsuite/gcc.dg/large-size-array-6.c -fno-diagnostics-show-caret
-fdiagno
stics-color=never -O2 -S -o large-size-array-6.s
/test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/large-size-array-6.c:6:3: internal
compil
er error: in tree_to_uhwi, at tree.h:3653


[Bug c++/58678] [4.9 Regression] pykde4-4.11.2 link error (devirtualization too trigger happy)

2014-03-14 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58678

--- Comment #33 from Jason Merrill jason at gcc dot gnu.org ---
Author: jason
Date: Fri Mar 14 19:06:54 2014
New Revision: 208573

URL: http://gcc.gnu.org/viewcvs?rev=208573root=gccview=rev
Log:
PR c++/58678
* search.c (dfs_get_pure_virtuals): Treat the destructor of an
abstract class as pure.

Added:
trunk/gcc/testsuite/g++.dg/ipa/devirt-30.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/search.c


[Bug c++/58678] [4.9 Regression] pykde4-4.11.2 link error (devirtualization too trigger happy)

2014-03-14 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58678

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #34 from Jason Merrill jason at gcc dot gnu.org ---
(In reply to David Kredba from comment #31)
 Calligra-2.8.0 is now affected too

Does the patch I just checked in fix Calligra?  If not, please reopen the bug
with a testcase.


[Bug fortran/60522] [4.7/4.8/4.9 Regression] WHERE construct causes an ICE in gfc_trans_where_2

2014-03-14 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60522

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

Summary|WHERE construct causes an   |[4.7/4.8/4.9 Regression]
   |ICE in gfc_trans_where_2|WHERE construct causes an
   ||ICE in gfc_trans_where_2

--- Comment #2 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Forgot to mark the PR as a regression. The ICE is due to the gcc_unreachable at

default:
  gcc_unreachable ();

meaning that cnext-op has not one of the expected values in the switch.


[Bug target/60032] [4.9 regression] ICE in reload_cse_simplify_operands, at postreload.c:411

2014-03-14 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60032

--- Comment #9 from Michael Meissner meissner at gcc dot gnu.org ---
Author: meissner
Date: Fri Mar 14 19:36:18 2014
New Revision: 208574

URL: http://gcc.gnu.org/viewcvs?rev=208574root=gccview=rev
Log:
2014-03-12  Michael Meissner  meiss...@linux.vnet.ibm.com

Back port from trunk
2013-04-25  Alan Modra  amo...@gmail.com

PR target/57052
* config/rs6000/rs6000.md (rotlsi3_internal7): Rename to
rotlsi3_internal7le and condition on !BYTES_BIG_ENDIAN.
(rotlsi3_internal8be): New BYTES_BIG_ENDIAN insn.
Repeat for many other rotate/shift and mask patterns using subregs.
Name lshiftrt insns.
(ashrdisi3_noppc64): Rename to ashrdisi3_noppc64be and condition
on WORDS_BIG_ENDIAN.

2013-06-07  Alan Modra  amo...@gmail.com

* config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
override user -mfp-in-toc.
(offsettable_ok_by_alignment): Consider just the current access
rather than the whole object, unless BLKmode.  Handle
CONSTANT_POOL_ADDRESS_P constants that lack a decl too.
(use_toc_relative_ref): Allow CONSTANT_POOL_ADDRESS_P constants
for -mcmodel=medium.
* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Don't
override user -mfp-in-toc or -msum-in-toc.  Default to
-mno-fp-in-toc for -mcmodel=medium.

2013-06-18  Alan Modra  amo...@gmail.com

* config/rs6000/rs6000.h (enum data_align): New.
(LOCAL_ALIGNMENT, DATA_ALIGNMENT): Use rs6000_data_alignment.
(DATA_ABI_ALIGNMENT): Define.
(CONSTANT_ALIGNMENT): Correct comment.
* config/rs6000/rs6000-protos.h (rs6000_data_alignment): Declare.
* config/rs6000/rs6000.c (rs6000_data_alignment): New function.

2013-07-11  Ulrich Weigand  ulrich.weig...@de.ibm.com

* config/rs6000/rs6000.md (*tls_gd_lowTLSmode:tls_abi_suffix):
Require GOT register as additional operand in UNSPEC.
(*tls_ld_lowTLSmode:tls_abi_suffix): Likewise.
(*tls_got_dtprel_lowTLSmode:tls_abi_suffix): Likewise.
(*tls_got_tprel_lowTLSmode:tls_abi_suffix): Likewise.
(*tls_gdTLSmode:tls_abi_suffix): Update splitter.
(*tls_ldTLSmode:tls_abi_suffix): Likewise.
(tls_got_dtprel_TLSmode:tls_abi_suffix): Likewise.
(tls_got_tprel_TLSmode:tls_abi_suffix): Likewise.

2014-01-23  Pat Haugen  pthau...@us.ibm.com

* config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
force flag_ira_loop_pressure if set via command line.

2014-02-06  Alan Modra  amo...@gmail.com

PR target/60032
* config/rs6000/rs6000.c (rs6000_secondary_memory_needed_mode): Only
change SDmode to DDmode when lra_in_progress.


Modified:
branches/ibm/gcc-4_8-branch/gcc/ChangeLog.ibm
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/linux64.h
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000-protos.h
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000.c
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000.h
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000.md


[Bug target/57052] missed optimization with rotate and mask

2014-03-14 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57052

--- Comment #2 from Michael Meissner meissner at gcc dot gnu.org ---
Author: meissner
Date: Fri Mar 14 19:36:18 2014
New Revision: 208574

URL: http://gcc.gnu.org/viewcvs?rev=208574root=gccview=rev
Log:
2014-03-12  Michael Meissner  meiss...@linux.vnet.ibm.com

Back port from trunk
2013-04-25  Alan Modra  amo...@gmail.com

PR target/57052
* config/rs6000/rs6000.md (rotlsi3_internal7): Rename to
rotlsi3_internal7le and condition on !BYTES_BIG_ENDIAN.
(rotlsi3_internal8be): New BYTES_BIG_ENDIAN insn.
Repeat for many other rotate/shift and mask patterns using subregs.
Name lshiftrt insns.
(ashrdisi3_noppc64): Rename to ashrdisi3_noppc64be and condition
on WORDS_BIG_ENDIAN.

2013-06-07  Alan Modra  amo...@gmail.com

* config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
override user -mfp-in-toc.
(offsettable_ok_by_alignment): Consider just the current access
rather than the whole object, unless BLKmode.  Handle
CONSTANT_POOL_ADDRESS_P constants that lack a decl too.
(use_toc_relative_ref): Allow CONSTANT_POOL_ADDRESS_P constants
for -mcmodel=medium.
* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Don't
override user -mfp-in-toc or -msum-in-toc.  Default to
-mno-fp-in-toc for -mcmodel=medium.

2013-06-18  Alan Modra  amo...@gmail.com

* config/rs6000/rs6000.h (enum data_align): New.
(LOCAL_ALIGNMENT, DATA_ALIGNMENT): Use rs6000_data_alignment.
(DATA_ABI_ALIGNMENT): Define.
(CONSTANT_ALIGNMENT): Correct comment.
* config/rs6000/rs6000-protos.h (rs6000_data_alignment): Declare.
* config/rs6000/rs6000.c (rs6000_data_alignment): New function.

2013-07-11  Ulrich Weigand  ulrich.weig...@de.ibm.com

* config/rs6000/rs6000.md (*tls_gd_lowTLSmode:tls_abi_suffix):
Require GOT register as additional operand in UNSPEC.
(*tls_ld_lowTLSmode:tls_abi_suffix): Likewise.
(*tls_got_dtprel_lowTLSmode:tls_abi_suffix): Likewise.
(*tls_got_tprel_lowTLSmode:tls_abi_suffix): Likewise.
(*tls_gdTLSmode:tls_abi_suffix): Update splitter.
(*tls_ldTLSmode:tls_abi_suffix): Likewise.
(tls_got_dtprel_TLSmode:tls_abi_suffix): Likewise.
(tls_got_tprel_TLSmode:tls_abi_suffix): Likewise.

2014-01-23  Pat Haugen  pthau...@us.ibm.com

* config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
force flag_ira_loop_pressure if set via command line.

2014-02-06  Alan Modra  amo...@gmail.com

PR target/60032
* config/rs6000/rs6000.c (rs6000_secondary_memory_needed_mode): Only
change SDmode to DDmode when lra_in_progress.


Modified:
branches/ibm/gcc-4_8-branch/gcc/ChangeLog.ibm
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/linux64.h
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000-protos.h
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000.c
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000.h
branches/ibm/gcc-4_8-branch/gcc/config/rs6000/rs6000.md


[Bug target/60525] [4.9 Regression] ICE: in final_scan_insn, at final.c:2952

2014-03-14 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60525

--- Comment #5 from Richard Henderson rth at gcc dot gnu.org ---
(In reply to Markus Trippelsdorf from comment #4)
 -march=native

For what host?


[Bug target/60525] [4.9 Regression] ICE: in final_scan_insn, at final.c:2952

2014-03-14 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60525

Richard Henderson rth at gcc dot gnu.org changed:

   What|Removed |Added

  Attachment #32350|0   |1
is obsolete||

--- Comment #6 from Richard Henderson rth at gcc dot gnu.org ---
Created attachment 32352
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32352action=edit
second patch

Testing showed some -m32 failures requiring minor tweaks.


[Bug target/60525] [4.9 Regression] ICE: in final_scan_insn, at final.c:2952

2014-03-14 Thread trippels at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60525

--- Comment #7 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
(In reply to Richard Henderson from comment #5)
 (In reply to Markus Trippelsdorf from comment #4)
  -march=native
 
 For what host?

Like in comment0: -march=amdfam10


[Bug fortran/60522] [4.7/4.8/4.9 Regression] WHERE construct causes an ICE in gfc_trans_where_2

2014-03-14 Thread mikael at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60522

Mikael Morin mikael at gcc dot gnu.org changed:

   What|Removed |Added

 CC||mikael at gcc dot gnu.org

--- Comment #3 from Mikael Morin mikael at gcc dot gnu.org ---
BLOCK constructs are not allowed inside WHERE constructs.
Thus, the common function optimization should not create a BLOCK to hold the
temporary variables, at least not inside WHERE.

Another possible fix, the following patch disables the optimization inside
WHERE.

diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c
index 52bd700..dc641de 100644
--- a/gcc/fortran/frontend-passes.c
+++ b/gcc/fortran/frontend-passes.c
@@ -630,9 +630,16 @@ static int
 cfe_code (gfc_code **c, int *walk_subtrees ATTRIBUTE_UNUSED,
   void *data ATTRIBUTE_UNUSED)
 {
-  current_code = c;
-  inserted_block = NULL;
-  changed_statement = NULL;
+  /* BLOCK constructs cannot appear inside WHERE blocks; as the optimization
+ may introduce the former we disable it inside the latter.  */
+  if ((*c)-op == EXEC_WHERE)
+*walk_subtrees = 0;
+  else
+{
+  current_code = c;
+  inserted_block = NULL;
+  changed_statement = NULL;
+}
   return 0;
 }


[Bug target/60520] stack adjustment are not merged anymore

2014-03-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60520

--- Comment #11 from H.J. Lu hjl.tools at gmail dot com ---
Created attachment 32353
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32353action=edit
A patch

This patch checks LEAVE and remove stack deallocation.
It removes 5 stack deallocations in cc1plus on Linux/i686.


[Bug c++/60531] New: template function not resolved when comparing functions

2014-03-14 Thread harald at gigawatt dot nl
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60531

Bug ID: 60531
   Summary: template function not resolved when comparing
functions
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: harald at gigawatt dot nl

template typename T void f();
int main() { fint == fint; }

is rejected with

test.cc: In function ‘int main()’:
test.cc:2:24: error: invalid operands of types ‘unresolved overloaded function
type’ and ‘unresolved overloaded function type’ to binary ‘operator==’
 int main() { fint == fint; }

I see no reason why this would be invalid, and it is accepted by all other
compilers I was able to test (clang, Intel, Sun, MSVC), but it is rejected by
GCC at least as far back as 4.3.

[Bug fortran/60392] Problem with TRANSPOSE and CONTIGUOUS dummy arguments

2014-03-14 Thread mikael at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60392

--- Comment #7 from Mikael Morin mikael at gcc dot gnu.org ---
Author: mikael
Date: Fri Mar 14 21:28:59 2014
New Revision: 208581

URL: http://gcc.gnu.org/viewcvs?rev=208581root=gccview=rev
Log:
fortran/
PR fortran/60392
* trans-array.c (gfc_conv_array_parameter): Don't reuse the descriptor
if it has transposed dimensions.

testsuite/
PR fortran/60392
* gfortran.dg/transpose_4.f90: New test.


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


[Bug fortran/60392] Problem with TRANSPOSE and CONTIGUOUS dummy arguments

2014-03-14 Thread mikael at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60392

--- Comment #8 from Mikael Morin mikael at gcc dot gnu.org ---
Fixed on trunk.


[Bug fortran/60392] Problem with TRANSPOSE and CONTIGUOUS dummy arguments

2014-03-14 Thread a.vogt at fulguritus dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60392

--- Comment #9 from Alexander Vogt a.vogt at fulguritus dot com ---
Thanks a lot!


[Bug c++/60532] New: [4.9 Regression] r208573 causes Firefox build failure

2014-03-14 Thread trippels at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60532

Bug ID: 60532
   Summary: [4.9 Regression] r208573 causes Firefox build failure
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: trippels at gcc dot gnu.org
CC: jason at gcc dot gnu.org

With --enable-checking=release I get with r208573:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x77e27840 (LWP 12914)]
0x00e3f6d0 in dfs_get_pure_virtuals(tree_node*, void*) ()
(gdb) bt
#0  0x00e3f6d0 in dfs_get_pure_virtuals(tree_node*, void*) ()
#1  0x00e3e302 in get_pure_virtuals(tree_node*) ()
#2  0x00d087e2 in finish_struct_1(tree_node*) ()
#3  0x00d002a1 in finish_struct(tree_node*, tree_node*) ()
#4  0x00c6bc58 in cp_parser_class_specifier_1(cp_parser*) [clone
.lto_priv.4355] ()
#5  0x00c5e2ef in cp_parser_decl_specifier_seq(cp_parser*, int,
cp_decl_specifier_seq*, int*) [clone .lto_priv.3863] ()
#6  0x00c5c7e0 in cp_parser_block_declaration(cp_parser*, bool) [clone
.lto_priv.4014] ()
#7  0x00c5bc1d in cp_parser_declaration(cp_parser*) [clone
.lto_priv.4104] ()
#8  0x00c5b8d8 in cp_parser_declaration_seq_opt(cp_parser*) [clone
.lto_priv.4092] ()
#9  0x00c7a56b in cp_parser_namespace_definition(cp_parser*) [clone
.lto_priv.3836] ()
#10 0x00c5be8c in cp_parser_declaration(cp_parser*) [clone
.lto_priv.4104] ()
#11 0x00c5b8d8 in cp_parser_declaration_seq_opt(cp_parser*) [clone
.lto_priv.4092] ()
#12 0x00c41683 in c_parse_file() ()
#13 0x00c10ab2 in c_common_parse_file() ()
#14 0x00c10921 in compile_file() [clone .lto_priv.2466] ()
#15 0x00b56e02 in toplev_main(int, char**) ()
#16 0x77756fb0 in __libc_start_main () from /lib/libc.so.6
#17 0x00b511c7 in _start ()

Reducing.


[Bug c++/60532] [4.9 Regression] r208573 causes Firefox build failure

2014-03-14 Thread trippels at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60532

--- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
markus@x4 libopus %  test.ii
class A
{
  ~A ();
};
class B : A
{
  virtual void m () = 0;
};

markus@x4 libopus % g++ -c test.ii
test.ii:5:7: internal compiler error: Segmentation fault
 class B : A
   ^
Please submit a full bug report,


[Bug fortran/60522] [4.7/4.8/4.9 Regression] WHERE construct causes an ICE in gfc_trans_where_2

2014-03-14 Thread tkoenig at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60522

--- Comment #4 from Thomas Koenig tkoenig at gcc dot gnu.org ---
(In reply to Mikael Morin from comment #3)
 BLOCK constructs are not allowed inside WHERE constructs.
 Thus, the common function optimization should not create a BLOCK to hold
 the temporary variables, at least not inside WHERE.

Possible.

 Another possible fix, the following patch disables the optimization inside
 WHERE.

Not preferred, I'd like to continue the optimization.

I'll take a look.


[Bug c++/60532] [4.9 Regression] r208573 causes Firefox build failure

2014-03-14 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60532

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-03-15
   Assignee|unassigned at gcc dot gnu.org  |jason at gcc dot gnu.org
 Ever confirmed|0   |1


[Bug c++/58678] [4.9 Regression] pykde4-4.11.2 link error (devirtualization too trigger happy)

2014-03-14 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58678

--- Comment #35 from Jason Merrill jason at gcc dot gnu.org ---
Author: jason
Date: Sat Mar 15 01:39:03 2014
New Revision: 208586

URL: http://gcc.gnu.org/viewcvs?rev=208586root=gccview=rev
Log:
PR c++/60532
PR c++/58678
* search.c (get_pure_virtuals): Handle abstract dtor here.
(dfs_get_pure_virtuals): Not here.

Added:
trunk/gcc/testsuite/g++.dg/other/abstract6.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/search.c


[Bug c++/60532] [4.9 Regression] r208573 causes Firefox build failure

2014-03-14 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60532

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Jason Merrill jason at gcc dot gnu.org ---
Fixed.


[Bug c++/60532] [4.9 Regression] r208573 causes Firefox build failure

2014-03-14 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60532

--- Comment #2 from Jason Merrill jason at gcc dot gnu.org ---
Author: jason
Date: Sat Mar 15 01:39:03 2014
New Revision: 208586

URL: http://gcc.gnu.org/viewcvs?rev=208586root=gccview=rev
Log:
PR c++/60532
PR c++/58678
* search.c (get_pure_virtuals): Handle abstract dtor here.
(dfs_get_pure_virtuals): Not here.

Added:
trunk/gcc/testsuite/g++.dg/other/abstract6.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/search.c


[Bug libstdc++/60521] std::lock_guard ignores adopt_lock strategy

2014-03-14 Thread turchanov at farpost dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60521

Sergei Turchanov turchanov at farpost dot com changed:

   What|Removed |Added

Version|4.8.3   |4.4.7

--- Comment #2 from Sergei Turchanov turchanov at farpost dot com ---
My bad! I did not correctly specified target GCC version which should really be
4.4.7 and thus code snippet from mutex is 

...
  lock_guard(mutex_type __m, adopt_lock_t __a) : _M_device(__m)
  { _M_device.lock(); }
...

which does attempt to lock a mutex.

Now as I see this bug is fixed in mainline so the question is do you plan any
new releases in 4.4.x branch?


[Bug rtl-optimization/60533] New: [4.8/4.9 regression] Error introduced by bb-reorder at -O3

2014-03-14 Thread wschmidt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60533

Bug ID: 60533
   Summary: [4.8/4.9 regression] Error introduced by bb-reorder at
-O3
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: wschmidt at gcc dot gnu.org
CC: ebotcazou at gcc dot gnu.org
  Host: powerpc64-unknown-linux-gnu
Target: powerpc64-unknown-linux-gnu
 Build: powerpc64-unknown-linux-gnu

For GCC 4.8 and current trunk, compiling the attached test case with g++ -O3
produces an executable that fails with a memory access violation.  I've tracked
this down to the bb-reorder phase, which breaks up a lifetime of general
register 6 by moving its definition and one of its uses very far apart.  Since
r6 is a volatile register, the call clobbers its value, eventually resulting in
a bogus address.

The error is introduced into this function:

;; Function unsigned int vigra::labelVolume(SrcIterator, SrcShape,
SrcAccessor,\
 DestIterator, DestAccessor, Neighborhood3D, EqualityFunctor) [with
SrcIterator\
 = vigra::StridedMultiIterator3u, int, const int, const int*; SrcAccessor =
\
vigra::StandardConstValueAccessorint; SrcShape = vigra::TinyVectorlong int,
\
3; DestIterator = vigra::StridedMultiIterator3u, int, int, int*;
DestAccess\
or = vigra::StandardValueAccessorint; Neighborhood3D =
vigra::Neighborhood3DS\
ix::NeighborCode3D; EqualityFunctor = std::equal_toint]
(_ZN5vigra11labelVolu\
meINS_20StridedMultiIteratorILj3EiRKiPS2_EENS_26StandardConstValueAccessorIiEEN\
S_10TinyVectorIlLi3EEENS1_ILj3EiRiPiEENS_21StandardValueAccessorIiEENS_17Neighb\
orhood3DSix14NeighborCode3DESt8equal_toIiEEEjT_T1_T0_T2_T3_T4_T5_,
funcdef_no=5\
419, decl_uid=81154, cgraph_uid=1943)

I'm also attaching the dumps from before and after the bb-reorder phase.  In
the 225r.rtl_dce dump, r6 is defined by insn 266 in block 25, and used by insn
268 in block 25 and insn 283 in block 26.  Block 26 has block 25 as its only
predecessor.

Following bb-reorder, insns 266 and 268 are now in block 12, but insn 283 is in
block 87, a great distance away.  As a result, r6 is now upward exposed by insn
283 in block 87, which has blocks 12 and 86 as predecessors.  Block 86 ends
with a call in insn 887, which clobbers the volatile register r6.  So along the
path from block 86 to block 87, insn 283 is guaranteed to see garbage in r6.

There is nothing in the prior graph corresponding to a path from block 86 to
block 87; this bogus path was introduced by the block reordering.

(Apologies for the size of the preprocessed test case.  I tried to reduce it
with multidelta but kept hanging my machine partway through.)


[Bug rtl-optimization/60533] [4.8/4.9 regression] Error introduced by bb-reorder at -O3

2014-03-14 Thread wschmidt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60533

--- Comment #1 from Bill Schmidt wschmidt at gcc dot gnu.org ---
Created attachment 32354
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32354action=edit
Dump before bb-reorder


[Bug rtl-optimization/60533] [4.8/4.9 regression] Error introduced by bb-reorder at -O3

2014-03-14 Thread wschmidt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60533

--- Comment #2 from Bill Schmidt wschmidt at gcc dot gnu.org ---
Created attachment 32355
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32355action=edit
Dump after bb-reorder


[Bug target/60525] [4.9 Regression] ICE: in final_scan_insn, at final.c:2952

2014-03-14 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60525

--- Comment #9 from Richard Henderson rth at gcc dot gnu.org ---
Author: rth
Date: Sat Mar 15 03:24:11 2014
New Revision: 208587

URL: http://gcc.gnu.org/viewcvs?rev=208587root=gccview=rev
Log:
PR target/60525

* config/i386/i386.md (floathiX87MODEF2): Delete expander; rename
define_insn from *floathiX87MODEF2_i387; allow nonimmediate_operand.
(*floathiX87MODEF2_i387_with_temp): Remove.
(floathi splitters): Remove.
(floatSWI48xxf2): New pattern.
(floatSWI48MODEF2): Rename from floatSWI48xX87MODEF2.  Drop
code that tried to handle DImode for 32-bit, but which was excluded
by the pattern's condition.  Drop allocation of stack temporary.
(*floatsiMODEF2_vector_mixed_with_temp): Remove.
(*floatSWI48MODEF2_mixed_with_temp): Remove.
(*floatSWI48MODEF2_mixed_interunit): Remove.
(*floatSWI48MODEF2_mixed_nointerunit): Remove.
(*floatsiMODEF2_vector_sse_with_temp): Remove.
(*floatSWI48MODEF2_sse_with_temp): Remove.
(*floatSWI48MODEF2_sse_interunit): Remove.
(*floatSWI48MODEF2_sse_nointerunit): Remove.
(*floatSWI48xX87MODEF2_i387_with_temp): Remove.
(*floatSWI48xX87MODEF2_i387): Remove.
(all float _with_temp splitters): Remove.
(*floatSWI48xMODEF2_i387): New pattern.
(*floatSWI48MODEF2_sse): New pattern.
(float TARGET_USE_VECTOR_CONVERTS splitters): Merge them.
(float TARGET_SSE_PARTIAL_REG_DEPENDENCY splitters): Merge them.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.md


[Bug rtl-optimization/60533] [4.8/4.9 regression] Error introduced by bb-reorder at -O3

2014-03-14 Thread wschmidt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60533

--- Comment #4 from Bill Schmidt wschmidt at gcc dot gnu.org ---
Created attachment 32357
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32357action=edit
Second half of test case


[Bug rtl-optimization/60533] [4.8/4.9 regression] Error introduced by bb-reorder at -O3

2014-03-14 Thread wschmidt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60533

--- Comment #3 from Bill Schmidt wschmidt at gcc dot gnu.org ---
Created attachment 32356
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32356action=edit
First half of test case

Sorry, have to split the test case into two pieces; please catenate to
reproduce.


[Bug target/60525] [4.9 Regression] ICE: in final_scan_insn, at final.c:2952

2014-03-14 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60525

Richard Henderson rth at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #10 from Richard Henderson rth at gcc dot gnu.org ---
Fixed.