[Bug tree-optimization/36187] [4.3 Regression] Partitioning problem with SFTs (again)
--- Comment #8 from rguenth at gcc dot gnu dot org 2008-05-09 20:05 --- Subject: Bug 36187 Author: rguenth Date: Fri May 9 20:04:57 2008 New Revision: 135126 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=135126 Log: 2008-05-09 Richard Guenther <[EMAIL PROTECTED]> PR tree-optimization/36187 * g++.dg/opt/pr36187.C: New testcase. Added: trunk/gcc/testsuite/g++.dg/opt/pr36187.C - copied unchanged from r135125, branches/gcc-4_3-branch/gcc/testsuite/g++.dg/opt/pr36187.C Modified: trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36187
[Bug tree-optimization/36187] [4.3 Regression] Partitioning problem with SFTs (again)
--- Comment #7 from rguenth at gcc dot gnu dot org 2008-05-09 19:20 --- Fixed. -- rguenth at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Known to fail||4.3.0 Known to work|4.2.3 4.4.0 |4.2.3 4.3.1 4.4.0 Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36187
[Bug tree-optimization/36187] [4.3 Regression] Partitioning problem with SFTs (again)
--- Comment #6 from rguenth at gcc dot gnu dot org 2008-05-09 19:20 --- Subject: Bug 36187 Author: rguenth Date: Fri May 9 19:19:33 2008 New Revision: 135125 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=135125 Log: 2008-05-09 Richard Guenther <[EMAIL PROTECTED]> PR tree-optimization/36187 * tree-dfa.c (dump_variable): Correct dumping of SFT_BASE_FOR_COMPONENTS_P. * tree-ssa-structalias.c (set_uids_in_ptset): Set SFT_UNPARTITIONABLE_P correctly for the union case. * g++.dg/opt/pr36187.C: New testcase. Added: branches/gcc-4_3-branch/gcc/testsuite/g++.dg/opt/pr36187.C Modified: branches/gcc-4_3-branch/gcc/ChangeLog branches/gcc-4_3-branch/gcc/testsuite/ChangeLog branches/gcc-4_3-branch/gcc/tree-dfa.c branches/gcc-4_3-branch/gcc/tree-ssa-structalias.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36187
[Bug tree-optimization/36187] [4.3 Regression] Partitioning problem with SFTs (again)
--- Comment #5 from rguenth at gcc dot gnu dot org 2008-05-09 14:26 --- We don't properly mark all fields of the union as base_for_components. But the real problem is probably that field-sensitive PTA doesn't consider structs with unions but we still create SFTs for them. If we didn't do that the problem with base_for_components would be avoided as well. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36187
[Bug tree-optimization/36187] [4.3 Regression] Partitioning problem with SFTs (again)
-- rguenth at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |rguenth at gcc dot gnu dot |dot org |org Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2008-05-09 14:21:11 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36187
[Bug tree-optimization/36187] [4.3 Regression] Partitioning problem with SFTs (again)
--- Comment #4 from rguenth at gcc dot gnu dot org 2008-05-09 14:09 --- The following aborts with -O2 --param max-aliased-vops=N with N in [19, 25] on x86_64-unknown-linux-gnu. Symptom is still lim being wrongly applied. If you cannot reproduce it search for the correct N with for n in `seq 0 5 100`; do g++-4.3 -O2 -S testfoo.cxx -fdump-tree-lim -B/abuild/rguenther/gcc43-g/gcc --param max-aliased-vops=$n; grep lsm testfoo.cxx.095t.lim > /dev/null 2>&1 && echo $n; done extern "C" void abort (void); enum SbxDataType { SbxINTEGER, SbxDECIMAL, SbxBYREF = 0x4000 }; struct SbxValues { union { float nSingle; float* pSingle; }; SbxDataType eType; }; static bool ImpPutDoubleFoo( SbxValues* p) { bool bRet = false; SbxValues aTmp; int count = 0; start: switch( p->eType ) { case SbxINTEGER: if (count++ > 0) abort (); aTmp.pSingle = &p->nSingle; goto direct; case SbxBYREF | SbxDECIMAL: bRet = false; break; direct: aTmp.eType = SbxDataType( p->eType | SbxBYREF ); p = &aTmp; goto start; case SbxBYREF | SbxINTEGER: break; default: bRet =true; } return bRet; } int main( int argc, char** argv ) { SbxValues aTmp; aTmp.eType = SbxINTEGER; if ( ImpPutDoubleFoo( &aTmp ) ) abort (); return 0; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36187
[Bug tree-optimization/36187] [4.3 Regression] Partitioning problem with SFTs (again)
-- rguenth at gcc dot gnu dot org changed: What|Removed |Added Known to work||4.2.3 4.4.0 Target Milestone|--- |4.3.1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36187
[Bug tree-optimization/36187] [4.3 Regression] Partitioning problem with SFTs (again)
--- Comment #3 from rguenth at gcc dot gnu dot org 2008-05-09 13:56 --- Created an attachment (id=15621) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15621&action=view) more minimized testcase -- rguenth at gcc dot gnu dot org changed: What|Removed |Added Attachment #15619|0 |1 is obsolete|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36187
[Bug tree-optimization/36187] [4.3 Regression] Partitioning problem with SFTs (again)
--- Comment #2 from rguenth at gcc dot gnu dot org 2008-05-09 13:29 --- The symptom of the alias problem is that we apply store-motion to aTmp.eType = SbxDataType( p->eType | SbxBYREF ); but reads through p = &aTmp; goto start; in that stmt incorrectly do not alias that store. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36187
[Bug tree-optimization/36187] [4.3 Regression] Partitioning problem with SFTs (again)
--- Comment #1 from rguenth at gcc dot gnu dot org 2008-05-09 13:26 --- Created an attachment (id=15619) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15619&action=view) testcase -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36187