public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1]
       [not found] <bug-43247-4@http.gcc.gnu.org/bugzilla/>
@ 2010-12-22 10:35 ` thiago at kde dot org
  2010-12-22 17:49 ` pinskia at gcc dot gnu.org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 12+ messages in thread
From: thiago at kde dot org @ 2010-12-22 10:35 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #10 from Thiago Macieira <thiago at kde dot org> 2010-12-22 10:35:23 UTC ---
This is still not fixed. I can reproduce now with a different testcase, in
4.5.1. However, this time, the same code works fine in 4.4. The reason is again
accessing an array out-of-bounds for elements that we know to be there. Pay
attention to the way operator== is implemented in the following code.

If I compile it with -O1, it prints "true" as it should. If I compile it with
-O2, it prints "false". If I compile it with -O1 -finline-small-functions
-finline -findirect-inlining -fstrict-overflow and compare the disassembly with
-O2 and a suitable list of -fno-*, the code is exactly identical, except for
some instructions that should perform the copy of half of m1's data into m3. So
in the end the comparison fails due to comparing to garbage.

=== code ===
#include <stdio.h>

template <int N, int M, typename T>
class QGenericMatrix
{
public:
    QGenericMatrix();
    QGenericMatrix(const QGenericMatrix<N, M, T>& other);
    explicit QGenericMatrix(const T *values);

    bool operator==(const QGenericMatrix<N, M, T>& other) const;
private:
    T m[N][M];    // Column-major order to match OpenGL.

    QGenericMatrix(int) {}       // Construct without initializing identity
matrix
};

template <int N, int M, typename T>
QGenericMatrix<N, M, T>::QGenericMatrix(const QGenericMatrix<N, M, T>& other)
{
    for (int col = 0; col < N; ++col)
        for (int row = 0; row < M; ++row)
            m[col][row] = other.m[col][row];
}

template <int N, int M, typename T>
QGenericMatrix<N, M, T>::QGenericMatrix(const T *values)
{
    for (int col = 0; col < N; ++col)
        for (int row = 0; row < M; ++row)
            m[col][row] = values[row * N + col];
}

template <int N, int M, typename T>
bool QGenericMatrix<N, M, T>::operator==(const QGenericMatrix<N, M, T>& other)
const
{
    for (int index = 0; index < N * M; ++index) {
        if (m[0][index] != other.m[0][index])
            return false;
    }
    return true;
}

typedef double qreal;
typedef QGenericMatrix<2, 2, qreal> QMatrix2x2;

int main(int , char**)
{
    qreal m1Data[] = {0.0, 0.0, 0.0, 0.0};
    QMatrix2x2 m1(m1Data);

    QMatrix2x2 m3 = m1;
    puts((m1 == m3) ? "true" : "false");
}
=== code ===

common args: -fno-exceptions -fno-rtti -fverbose-asm -march=core2 -mfpmath=sse
(though x87 math also shows the same problem)

prints "true" with: -O1 -finline-small-functions -finline -findirect-inlining
-fstrict-overflow

prints "false" with: -O2 -fno-align-functions -fno-align-jumps
-fno-align-labels -fno-caller-saves -fno-tree-switch-conversion -fno-tree-vrp
-fno-crossjumping -fno-cse-follow-jumps -fno-expensive-optimizations -fno-gcse
-fno-ipa-cp -fno-ipa-sra -fno-optimize-register-move
-fno-optimize-sibling-calls -fno-peephole2 -fno-regmove -fno-reorder-blocks
-fno-reorder-functions -fno-rerun-cse-after-loop -fno-schedule-insns2
-fno-strict-aliasing -fno-strict-aliasing -fno-thread-jumps
-fno-tree-builtin-call-dce -fno-tree-pre


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1]
       [not found] <bug-43247-4@http.gcc.gnu.org/bugzilla/>
  2010-12-22 10:35 ` [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1] thiago at kde dot org
@ 2010-12-22 17:49 ` pinskia at gcc dot gnu.org
  2010-12-22 19:55 ` thiago at kde dot org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 12+ messages in thread
From: pinskia at gcc dot gnu.org @ 2010-12-22 17:49 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|                            |
      Known to fail|                            |

--- Comment #11 from Andrew Pinski <pinskia at gcc dot gnu.org> 2010-12-22 17:48:55 UTC ---
>The reason is again accessing an array out-of-bounds for elements that we know to be there.

No that is undefined and different from the original testcase.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1]
       [not found] <bug-43247-4@http.gcc.gnu.org/bugzilla/>
  2010-12-22 10:35 ` [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1] thiago at kde dot org
  2010-12-22 17:49 ` pinskia at gcc dot gnu.org
@ 2010-12-22 19:55 ` thiago at kde dot org
  2011-06-27 14:31 ` rguenth at gcc dot gnu.org
  2012-03-13 16:45 ` [Bug tree-optimization/43247] [4.4 " jakub at gcc dot gnu.org
  4 siblings, 0 replies; 12+ messages in thread
From: thiago at kde dot org @ 2010-12-22 19:55 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #12 from Thiago Macieira <thiago at kde dot org> 2010-12-22 19:55:38 UTC ---
(In reply to comment #11)
> >The reason is again accessing an array out-of-bounds for elements that we know to be there.
> 
> No that is undefined and different from the original testcase.

Ok. Shall I open a new report with the new information?


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1]
       [not found] <bug-43247-4@http.gcc.gnu.org/bugzilla/>
                   ` (2 preceding siblings ...)
  2010-12-22 19:55 ` thiago at kde dot org
@ 2011-06-27 14:31 ` rguenth at gcc dot gnu.org
  2012-03-13 16:45 ` [Bug tree-optimization/43247] [4.4 " jakub at gcc dot gnu.org
  4 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2011-06-27 14:31 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.3.6                       |4.4.7

--- Comment #13 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-06-27 12:14:08 UTC ---
4.3 branch is being closed, moving to 4.4.7 target.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug tree-optimization/43247] [4.4 Regression] Incorrect optimization while declaring array[1]
       [not found] <bug-43247-4@http.gcc.gnu.org/bugzilla/>
                   ` (3 preceding siblings ...)
  2011-06-27 14:31 ` rguenth at gcc dot gnu.org
@ 2012-03-13 16:45 ` jakub at gcc dot gnu.org
  4 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2012-03-13 16:45 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|4.4.7                       |4.5.0

--- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-03-13 13:04:33 UTC ---
Fixed in 4.5+, 4.4 is no longer supported.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1]
  2010-03-03 14:37 [Bug c++/43247] New: Icorrect " ogoffart at kde dot org
                   ` (5 preceding siblings ...)
  2010-03-27 14:25 ` hjl dot tools at gmail dot com
@ 2010-05-22 18:35 ` rguenth at gcc dot gnu dot org
  6 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-05-22 18:35 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from rguenth at gcc dot gnu dot org  2010-05-22 18:13 -------
GCC 4.3.5 is being released, adjusting target milestone.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.3.5                       |4.3.6


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


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1]
  2010-03-03 14:37 [Bug c++/43247] New: Icorrect " ogoffart at kde dot org
                   ` (4 preceding siblings ...)
  2010-03-27 10:46 ` rguenth at gcc dot gnu dot org
@ 2010-03-27 14:25 ` hjl dot tools at gmail dot com
  2010-05-22 18:35 ` rguenth at gcc dot gnu dot org
  6 siblings, 0 replies; 12+ messages in thread
From: hjl dot tools at gmail dot com @ 2010-03-27 14:25 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from hjl dot tools at gmail dot com  2010-03-27 14:24 -------
(In reply to comment #7)
> I very much doubt that the cited revision fixed anything here.
> 

If it is true, that only means that the bug is latent on trunk.


-- 


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


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1]
  2010-03-03 14:37 [Bug c++/43247] New: Icorrect " ogoffart at kde dot org
                   ` (3 preceding siblings ...)
  2010-03-26 21:46 ` thiago at kde dot org
@ 2010-03-27 10:46 ` rguenth at gcc dot gnu dot org
  2010-03-27 14:25 ` hjl dot tools at gmail dot com
  2010-05-22 18:35 ` rguenth at gcc dot gnu dot org
  6 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-03-27 10:46 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from rguenth at gcc dot gnu dot org  2010-03-27 10:45 -------
I very much doubt that the cited revision fixed anything here.


-- 


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


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1]
  2010-03-03 14:37 [Bug c++/43247] New: Icorrect " ogoffart at kde dot org
                   ` (2 preceding siblings ...)
  2010-03-26 18:54 ` hjl dot tools at gmail dot com
@ 2010-03-26 21:46 ` thiago at kde dot org
  2010-03-27 10:46 ` rguenth at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 12+ messages in thread
From: thiago at kde dot org @ 2010-03-26 21:46 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from thiago at kde dot org  2010-03-26 21:46 -------
Is this fix going to be backported to the 4.4.x line?


-- 


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


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1]
  2010-03-03 14:37 [Bug c++/43247] New: Icorrect " ogoffart at kde dot org
  2010-03-15 15:03 ` [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect " rguenth at gcc dot gnu dot org
  2010-03-26 18:46 ` pinskia at gcc dot gnu dot org
@ 2010-03-26 18:54 ` hjl dot tools at gmail dot com
  2010-03-26 21:46 ` thiago at kde dot org
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 12+ messages in thread
From: hjl dot tools at gmail dot com @ 2010-03-26 18:54 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from hjl dot tools at gmail dot com  2010-03-26 18:54 -------
This is fixed by revision 151360:

http://gcc.gnu.org/ml/gcc-cvs/2009-09/msg00106.html

and was introduced by revision 118729:

http://gcc.gnu.org/ml/gcc-cvs/2006-11/msg00380.html


-- 


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


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1]
  2010-03-03 14:37 [Bug c++/43247] New: Icorrect " ogoffart at kde dot org
  2010-03-15 15:03 ` [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect " rguenth at gcc dot gnu dot org
@ 2010-03-26 18:46 ` pinskia at gcc dot gnu dot org
  2010-03-26 18:54 ` hjl dot tools at gmail dot com
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 12+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2010-03-26 18:46 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from pinskia at gcc dot gnu dot org  2010-03-26 18:46 -------
*** Bug 43537 has been marked as a duplicate of this bug. ***


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |juha dot kallioinen at nokia
                   |                            |dot com


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


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1]
  2010-03-03 14:37 [Bug c++/43247] New: Icorrect " ogoffart at kde dot org
@ 2010-03-15 15:03 ` rguenth at gcc dot gnu dot org
  2010-03-26 18:46 ` pinskia at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-03-15 15:03 UTC (permalink / raw)
  To: gcc-bugs



-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2


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


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2012-03-13 16:45 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <bug-43247-4@http.gcc.gnu.org/bugzilla/>
2010-12-22 10:35 ` [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect optimization while declaring array[1] thiago at kde dot org
2010-12-22 17:49 ` pinskia at gcc dot gnu.org
2010-12-22 19:55 ` thiago at kde dot org
2011-06-27 14:31 ` rguenth at gcc dot gnu.org
2012-03-13 16:45 ` [Bug tree-optimization/43247] [4.4 " jakub at gcc dot gnu.org
2010-03-03 14:37 [Bug c++/43247] New: Icorrect " ogoffart at kde dot org
2010-03-15 15:03 ` [Bug tree-optimization/43247] [4.3/4.4 Regression] Incorrect " rguenth at gcc dot gnu dot org
2010-03-26 18:46 ` pinskia at gcc dot gnu dot org
2010-03-26 18:54 ` hjl dot tools at gmail dot com
2010-03-26 21:46 ` thiago at kde dot org
2010-03-27 10:46 ` rguenth at gcc dot gnu dot org
2010-03-27 14:25 ` hjl dot tools at gmail dot com
2010-05-22 18:35 ` rguenth at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).