public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/82466] Missing warning for re-declaration of built-in function as variable
       [not found] <bug-82466-4@http.gcc.gnu.org/bugzilla/>
@ 2017-10-07 20:11 ` paolo.carlini at oracle dot com
  0 siblings, 0 replies; only message in thread
From: paolo.carlini at oracle dot com @ 2017-10-07 20:11 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82466

--- Comment #1 from Paolo Carlini <paolo.carlini at oracle dot com> ---
Thanks. I don't think there is *much* more than the below to it:

Index: decl.c
===================================================================
--- decl.c      (revision 253509)
+++ decl.c      (working copy)
@@ -1431,7 +1431,13 @@
          /* Avoid warnings redeclaring built-ins which have not been
             explicitly declared.  */
          if (DECL_ANTICIPATED (olddecl))
-           return NULL_TREE;
+           {
+             if (TREE_PUBLIC (newdecl))
+               warning_at (DECL_SOURCE_LOCATION (newdecl),
+                           0, "built-in function %qD declared as
non-function",
+                           newdecl);
+             return NULL_TREE;
+           }

          /* If you declare a built-in or predefined function name as static,
             the old definition is overridden, but optionally warn this was a

however, with the warning unconditionally enabled, as in the C front-end,
g++.dg/parse/builtin2.C fails. Maybe that's ok, maybe we want to give the
warning a name. Bernd, are you willing to work on this issue too, for 8?
>From gcc-bugs-return-577687-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Oct 07 20:24:39 2017
Return-Path: <gcc-bugs-return-577687-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 94739 invoked by alias); 7 Oct 2017 20:24:38 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 94568 invoked by uid 48); 7 Oct 2017 20:24:33 -0000
From: "mikpelinux at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/82420] ICE with -malign-int and -m68000
Date: Sat, 07 Oct 2017 20:24:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: target
X-Bugzilla-Version: 7.2.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: mikpelinux at gmail dot com
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-82420-4-ArE1UBiJBF@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-82420-4@http.gcc.gnu.org/bugzilla/>
References: <bug-82420-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2017-10/txt/msg00747.txt.bz2
Content-length: 888

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82420

--- Comment #2 from Mikael Pettersson <mikpelinux at gmail dot com> ---
Started with r145586, but that may simply have exposed a latent issue.

BTW, the configuration of the reporter's gcc
> $ m68k-elf-gcc -v
> Using built-in specs.
> COLLECT_GCC=m68k-elf-gcc
> COLLECT_LTO_WRAPPER=/opt/toolchains/m68k/libexec/gcc/m68k-elf/7.1.0/lto-wrapper
> Target: m68k-elf
> Configured with: ../gcc-7.1.0/configure --target=m68k-elf --program-prefix=m68k-elf- --prefix=/opt/toolchains/m68k --with-local-prefix=/opt/toolchains/m68k --with-newlib --enable-languages=c,c++ --disabel-nls --disable-werror --enable-threads=single --disable-libssp --disable-libquadmath --with-cpu=68000 --with-arch=m68k
> Thread model: single
> gcc version 7.1.0 (GCC)

has a minor typo: it should be '--disable-nls' not '--disabel-nls'.
>From gcc-bugs-return-577685-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Oct 07 20:24:04 2017
Return-Path: <gcc-bugs-return-577685-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 93650 invoked by alias); 7 Oct 2017 20:24:03 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 93569 invoked by uid 48); 7 Oct 2017 20:23:58 -0000
From: "bernd.edlinger at hotmail dot de" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/82466] Missing warning for re-declaration of built-in function as variable
Date: Sat, 07 Oct 2017 20:24:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: c++
X-Bugzilla-Version: 8.0
X-Bugzilla-Keywords: diagnostic
X-Bugzilla-Severity: normal
X-Bugzilla-Who: bernd.edlinger at hotmail dot de
X-Bugzilla-Status: NEW
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-82466-4-YVIiHOVkPj@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-82466-4@http.gcc.gnu.org/bugzilla/>
References: <bug-82466-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2017-10/txt/msg00745.txt.bz2
Content-length: 342

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82466

--- Comment #2 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
Thanks for looking at this.
I think your patch is fine.

My thought was that it could also be enabled by
OPT_Wbuiltin_declaration_mismatch,
which is default-enabled but can be disabled
in the test case, if needed.
>From gcc-bugs-return-577686-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Oct 07 20:24:38 2017
Return-Path: <gcc-bugs-return-577686-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 94630 invoked by alias); 7 Oct 2017 20:24:38 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 94561 invoked by uid 48); 7 Oct 2017 20:24:33 -0000
From: "heiko at hexco dot de" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug preprocessor/82130] stringification (#) in traditional mode
Date: Sat, 07 Oct 2017 20:24:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: preprocessor
X-Bugzilla-Version: 7.1.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: heiko at hexco dot de
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: cc
Message-ID: <bug-82130-4-JNrfjyk57H@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-82130-4@http.gcc.gnu.org/bugzilla/>
References: <bug-82130-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2017-10/txt/msg00746.txt.bz2
Content-length: 771

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82130

Heiko Eißfeldt <heiko at hexco dot de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |heiko at hexco dot de

--- Comment #1 from Heiko Eißfeldt <heiko at hexco dot de> ---
This variant works for me with:

#define STRINGIFY(x) "x"
#define _ASSERT_(expr)              if (.not. (expr)) print *, STRINGIFY(expr)
program test
logical :: check = .false.
_ASSERT_(check)
end

cpp -traditional-cpp -P -E issues/fortranStringify.f
gives

program test
logical :: check = .false.
if (.not. (check)) print *, "check"
end

This is with cpp 6.3.0 on ubuntu 17.04 amd64.
>From gcc-bugs-return-577688-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Oct 07 21:01:39 2017
Return-Path: <gcc-bugs-return-577688-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 52401 invoked by alias); 7 Oct 2017 21:01:39 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 52356 invoked by uid 48); 7 Oct 2017 21:01:35 -0000
From: "saphirahemp at yahoo dot de" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/82467] New: name mangling error when using constrained an specialized template functions
Date: Sat, 07 Oct 2017 21:01:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: new
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: c++
X-Bugzilla-Version: 6.3.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: saphirahemp at yahoo dot de
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone attachments.created
Message-ID: <bug-82467-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2017-10/txt/msg00748.txt.bz2
Content-length: 3211

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82467

            Bug ID: 82467
           Summary: name mangling error when using constrained an
                    specialized template functions
           Product: gcc
           Version: 6.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: saphirahemp at yahoo dot de
  Target Milestone: ---

Created attachment 42321
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42321&action=edit
the *i* file

It seems that the compiler produces some collisions in case of this special
constellation - template specialization for type T and constrained function
that accepts T.
 example for integer: 


template<>
     void f(int t) {} 

template<class T>
   requires requires(T t){ t + t;}
     void f(T t) {}

int main(){
   f(1);
}

will result in an error when compiling:

g++-6 -fconcepts int.cpp

/tmp/ccooj1kv.s: Assembler messages:
/tmp/ccooj1kv.s:65: Error: symbol `_Z1fIiEvT_' is already defined
/tmp/ccooj1kv.s: Error: .size expression for _Z1fIiEvT_ does not evaluate to a
constant

The same code with float instead of int will produce the same error message,
with a slightly different symbol: _Z1fIfEvT_ instead of _Z1fIiEvT_.



further informations:

the exact version of GCC and the system type;

gcc version 6.3.0 20170519 (Ubuntu/Linaro 6.3.0-18ubuntu2~16.04) 
Target: x86_64-linux-gnu


the options given when GCC was configured/built;

Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
6.3.0-18ubuntu2~16.04' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs
--enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-6 --program-prefix=x86_64-linux-gnu- --enable-shared
--enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/
--enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-libmpx --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-6-amd64/jre --enable-java-home
--with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-amd64
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--with-target-system-zlib --enable-objc-gc=auto --enable-multiarch
--disable-werror --with-arch-32=i686 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu

the complete command line that triggers the bug;

g++-6 -fconcepts int.cpp

the compiler output (error messages, warnings, etc.);

/tmp/ccooj1kv.s: Assembler messages:
/tmp/ccooj1kv.s:65: Error: symbol `_Z1fIiEvT_' is already defined
/tmp/ccooj1kv.s: Error: .size expression for _Z1fIiEvT_ does not evaluate to a
constant
>From gcc-bugs-return-577689-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Oct 07 21:13:31 2017
Return-Path: <gcc-bugs-return-577689-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 113364 invoked by alias); 7 Oct 2017 21:13:31 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 113336 invoked by uid 48); 7 Oct 2017 21:13:27 -0000
From: "heiko at hexco dot de" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug preprocessor/78581] Out of memory when preprocessing #include with -traditional
Date: Sat, 07 Oct 2017 21:13:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: preprocessor
X-Bugzilla-Version: 6.2.1
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: heiko at hexco dot de
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: cc
Message-ID: <bug-78581-4-EZOtxaSb95@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-78581-4@http.gcc.gnu.org/bugzilla/>
References: <bug-78581-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2017-10/txt/msg00749.txt.bz2
Content-length: 819

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78581

Heiko Eißfeldt <heiko at hexco dot de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |heiko at hexco dot de

--- Comment #2 from Heiko Eißfeldt <heiko at hexco dot de> ---
I can reproduce this with cpp 6.3.0 on Ubuntu 17.04 amd64. No environment
variable setting is necessary.

And if I simplify your test case "a" to

#include "b"
#if 0
#endif

cpp does not see the '#if 0':
=======
cpp -traditional-cpp -ffreestanding -P issues/a
f

issues/a:3:0: error: #endif without #if
 #endif

#if 0
=======

So, it could have something to do with misparsing at the end of "b".
Fascinating...
>From gcc-bugs-return-577690-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Oct 07 21:14:47 2017
Return-Path: <gcc-bugs-return-577690-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 114923 invoked by alias); 7 Oct 2017 21:14:47 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 114857 invoked by uid 55); 7 Oct 2017 21:14:41 -0000
From: "pault at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug fortran/82375] PDT components in PDT declarations fail to compile
Date: Sat, 07 Oct 2017 21:14:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: fortran
X-Bugzilla-Version: 8.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: pault at gcc dot gnu.org
X-Bugzilla-Status: NEW
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: pault at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-82375-4-aSFAdIYcAu@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-82375-4@http.gcc.gnu.org/bugzilla/>
References: <bug-82375-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2017-10/txt/msg00750.txt.bz2
Content-length: 2739

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82375

--- Comment #5 from Paul Thomas <pault at gcc dot gnu.org> ---
Author: pault
Date: Sat Oct  7 21:14:06 2017
New Revision: 253514

URL: https://gcc.gnu.org/viewcvs?rev=253514&root=gcc&view=rev
Log:
2017-10-07  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/82375
        * class.c (gfc_find_derived_vtab): Return NULL for a passed
        pdt template to prevent bad procedures from being written.
        * decl.c (gfc_get_pdt_instance): Do not use the default
        initializer for pointer and allocatable pdt type components. If
        the component is allocatbale, set the 'alloc_comp' attribute of
        'instance'.
        * module.c : Add a prototype for 'mio_actual_arglist'. Add a
        boolean argument 'pdt'.
        (mio_component): Call it for the parameter list of pdt type
        components with 'pdt' set to true.
        (mio_actual_arg): Add the boolean 'pdt' and, if it is set, call
        mio_integer for the 'spec_type'.
        (mio_actual_arglist): Add the boolean 'pdt' and use it in the
        call to mio_actual_arg.
        (mio_expr, mio_omp_udr_expr): Call mio_actual_arglist with
        'pdt' set false.
        * resolve.c (get_pdt_spec_expr): Add the parameter name to the
        KIND parameter error.
        (get_pdt_constructor): Check that cons->expr is non-null.
        * trans-array.c (structure_alloc_comps): For deallocation of
        allocatable components, ensure that parameterized components
        are deallocated first. Likewise, when parameterized components
        are allocated, nullify allocatable components first. Do not
        recurse into pointer or allocatable pdt components while
        allocating or deallocating parameterized components. Test that
        parameterized arrays or strings are allocated before freeing
        them.
        (gfc_trans_pointer_assignment): Call the new function. Tidy up
        a minor whitespace issue.
        trans-decl.c (gfc_trans_deferred_vars): Set 'tmp' to NULL_TREE
        to prevent the expression from being used a second time.

2017-10-07  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/82375
        * gfortran.dg/pdt_13.f03 : New test.
        * gfortran.dg/pdt_14.f03 : New test.
        * gfortran.dg/pdt_15.f03 : New test.

Added:
    trunk/gcc/testsuite/gfortran.dg/pdt_13.f03
    trunk/gcc/testsuite/gfortran.dg/pdt_14.f03
    trunk/gcc/testsuite/gfortran.dg/pdt_15.f03
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/class.c
    trunk/gcc/fortran/decl.c
    trunk/gcc/fortran/module.c
    trunk/gcc/fortran/resolve.c
    trunk/gcc/fortran/trans-array.c
    trunk/gcc/fortran/trans-decl.c
    trunk/gcc/testsuite/ChangeLog
>From gcc-bugs-return-577691-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Oct 07 21:16:08 2017
Return-Path: <gcc-bugs-return-577691-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 117125 invoked by alias); 7 Oct 2017 21:16:08 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 117065 invoked by uid 48); 7 Oct 2017 21:15:58 -0000
From: "barry.revzin at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/82468] New: ICE with deduction guide template
Date: Sat, 07 Oct 2017 21:16:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: new
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: c++
X-Bugzilla-Version: 8.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: barry.revzin at gmail dot com
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone
Message-ID: <bug-82468-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2017-10/txt/msg00751.txt.bz2
Content-length: 2083

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82468

            Bug ID: 82468
           Summary: ICE with deduction guide template
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: barry.revzin at gmail dot com
  Target Milestone: ---

If we try to make the template-name of the deduction guide a type-parameter,
courtesy of W.F. on SO (https://stackoverflow.com/q/46624005/2069064):

template <class T>
struct Foo {
   Foo(T) { }
};

template <template <class> class TT>
TT(double) -> TT<int>;

int main() {
    Foo foo(2.0);
}

yields:

prog.cc:7:15: internal compiler error: Segmentation fault
 TT(double) -> TT<int>;
               ^~~~~~~
0xbcb8bf crash_signal
        ../../source/gcc/toplev.c:326
0x70b892 check_special_function_return_type
        ../../source/gcc/cp/decl.c:9742
0x70b892 grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*,
decl_context, int, tree_node**)
        ../../source/gcc/cp/decl.c:10319
0x70f126 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int,
tree_node*, tree_node*, tree_node**)
        ../../source/gcc/cp/decl.c:4909
0x780e6e cp_parser_init_declarator
        ../../source/gcc/cp/parser.c:19489
0x785c3a cp_parser_single_declaration
        ../../source/gcc/cp/parser.c:27073
0x785d6c cp_parser_template_declaration_after_parameters
        ../../source/gcc/cp/parser.c:26676
0x7863ff cp_parser_explicit_template_declaration
        ../../source/gcc/cp/parser.c:26912
0x7863ff cp_parser_template_declaration_after_export
        ../../source/gcc/cp/parser.c:26931
0x78a151 cp_parser_declaration
        ../../source/gcc/cp/parser.c:12676
0x78a41b cp_parser_declaration_seq_opt
        ../../source/gcc/cp/parser.c:12603
0x78a6de cp_parser_translation_unit
        ../../source/gcc/cp/parser.c:4391
0x78a6de c_parse_file()
        ../../source/gcc/cp/parser.c:38915
0x83adc6 c_common_parse_file()
        ../../source/gcc/c-family/c-opts.c:1113
>From gcc-bugs-return-577692-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Oct 07 21:22:50 2017
Return-Path: <gcc-bugs-return-577692-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 125614 invoked by alias); 7 Oct 2017 21:22:49 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 125602 invoked by uid 89); 7 Oct 2017 21:22:49 -0000
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=-5.6 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,MIME_BASE64_BLANKS,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy\x160, sk:pinskia, H*r:0400, U*pinskia
X-HELO: mxe08.gs.com
Received: from mxe08.gs.com (HELO mxe08.gs.com) (207.17.46.170) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 07 Oct 2017 21:22:47 +0000
Received: from pps.filterd (gsppabdp04sd.idz.gs.com [127.0.0.1])	by gsppabdp04sd.idz.gs.com (8.16.0.21/8.16.0.21) with SMTP id v97LMh1E025499;	Sat, 7 Oct 2017 17:22:43 -0400
Received: from gsppabdp03nd.inz.gs.com ([10.204.43.245])	by gsppabdp04sd.idz.gs.com with ESMTP id 2deqyns539-1	for <gcc-bugs@gcc.gnu.org>; Sat, 07 Oct 2017 17:22:43 -0400
Received: from pps.filterd (gsppabdp03nd.inz.gs.com [127.0.0.1])	by gsppabdp03nd.inz.gs.com (8.16.0.17/8.16.0.17) with SMTP id v97LJHVX010789;	Sat, 7 Oct 2017 17:22:43 -0400
Received: from gsdgamp14etn4.firmwide.corp.gs.com (gsdgamp14etn4.firmwide.corp.gs.com [10.59.149.190])	by gsppabdp03nd.inz.gs.com with ESMTP id 2detjba19c-1;	Sat, 07 Oct 2017 17:22:43 -0400
Received: from GSDGAMP16ETN1.firmwide.corp.gs.com (10.47.14.158) by gsdgamp14etn4.firmwide.corp.gs.com (10.59.149.190) with Microsoft SMTP Server (TLS) id 15.0.1210.3; Sat, 7 Oct 2017 17:22:43 -0400
Received: from GSDGAMP16ETN2.firmwide.corp.gs.com (10.47.14.162) by gsdgamp16etn1.firmwide.corp.gs.com (10.47.14.158) with Microsoft SMTP Server (TLS) id 15.0.1210.3; Sat, 7 Oct 2017 17:22:43 -0400
Received: from GSDGAMP16ETN2.firmwide.corp.gs.com ([fe80::bddb:cdfb:fe77:d67c]) by gsdgamp16etn2.firmwide.corp.gs.com ([fe80::bddb:cdfb:fe77:d67c%12]) with mapi id 15.00.1210.000; Sat, 7 Oct 2017 17:22:43 -0400
From: "Saldyrkine, Mikhail" <Mikhail.Saldyrkine@gs.com>
To: "'Andrew Pinski'" <pinskia@gmail.com>
CC: "gcc-bugs@gcc.gnu.org" <gcc-bugs@gcc.gnu.org>,        "Saldyrkine, Mikhail"	<Mikhail.Saldyrkine@gs.com>
Subject: RE: GCC does not optimize out functions without side effects with asm statements inside loop even if return velue is ignored
Date: Sat, 07 Oct 2017 21:22:00 -0000
Message-ID: <7822e16731154ad39b004d792dbf578d@gsdgamp16etn2.firmwide.corp.gs.com>
References: <13c09d77e3db4aabbb0d8a1fbf81c3a7@gsdgamp16etn2.firmwide.corp.gs.com> <e00b20ce8ed9469cb9812991f29151aa@gsdgamp16etn2.firmwide.corp.gs.com> <CA+=Sn1kF7Lz=Z7AG2XtCWnRi70w1DcHiAinAKi43ESVfrjnx+A@mail.gmail.com>
In-Reply-To: <CA+=Sn1kF7Lz=Z7AG2XtCWnRi70w1DcHiAinAKi43ESVfrjnx+A@mail.gmail.com>
x-gs-occ-classification: cADEiD6MtM/V81yfDcvek6MvoudoN9I/pOVBz2TcAP0x-gs-occ-version-number: fklVzOoRWZTK04YWiIejFAMk64JPlRzSF/HyjMxkwqcx-gs-occ-recipientsandproperties: GGD7BN/Rv9rRCN2ekeG8DAnryBsRcn6KZQX8yUbHHzqLwj/ytldqYJ8qrgmqVFkwe32QlXz/AWGA/C0QB6q0hZpGuE8Fiae1hue1MTW2Owl2xHHHLhJ1gMyXWwJu9ATd9ebf2H7pGwAG1Mvy8/6JFZQTtbrsp7T4xz+KAAhtfn0xc4zSN6cKGTv5FjFYNAnQin+CsTWXxq4UmMWpd05rwtGaIG0ixZulBfV37whradfWFB5XSNbWBvcJqcbxsp7MHA38CKE6ZlaaJCTnbF0KyFES0aVeYK7QUefWEGLjtRZxHkFbE6aXWnjKbOGWav0yICcLeZ9Ynfpe8H6LKzP1KYEpVG9uUCftlydOBb8XDY2ad4acTtN1/tzn0r/QmZdq
x-gs-occ-clientinfo: vA/7HhuVqq+qwPcW44++u7lNdr+Nq+RcrnfRSr1/GjwM8owUIuOhLII7iSXGSpXRyMK7FYupXc+EVnkD8kzEBUXSKx9Zus/7a0mgnaasTlkkzJRND+88xMBHgvmNuKuNVwzuL8Iiv8EQRXptr6PBdHZ9+ZxifkmC9xuTDgufs1cV+s/tKgEFEFX9kNG7//cP9T7b6uW/hChq6V4ZVOpSjA=x-gs-occ-other: Pko5O2ly0fnzO9SgiZIb1Hc5NtIhwHgzpqpbkI9y/IdCwCC2VzMo6QALrODoUdKxNc/hx+T9iWXHN8y6jlFik0wu4mvtO1lXaJfvw8t96f5AzV6VGGssTeop2vnTwa8H
x-ms-exchange-transport-fromentityheader: Hosted
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-WiganSS: 01000000010022gsdgamp14etn4.firmwide.corp.gs.com	ID0045<7822e16731154ad39b004d792dbf578d@gsdgamp16etn2.firmwide.corp.gs.com>
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions 17-10-07_05:,, signatures=0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions 17-10-07_05:,, signatures=0
X-IsSubscribed: yes
X-SW-Source: 2017-10/txt/msg00752.txt.bz2
Content-length: 11647

VGhlICIgdWludDY0X3QgdGVzdF9ub2FzbSh1aW50NjRfdCBpZHgpIiBoYXMg
c2FtZSBsb29wIGFuZCB0aGUgZnVuY3Rpb24gaXMgb3B0aW1pemVkIG91dC4g
IA0KSSd2ZSBjaGFuZ2VkIGNvZGUgdG8gY29uc3RyYWludCB0aGUgbG9vcCBp
dGVyYXRpb25zIGFuZCBjb21waWxlcjoNCi0gdW5yb2xsZWQgbG9vcA0KLSBk
aWQgbm90IGVsaW1pbmF0ZSB0aGUgZnVuY3Rpb24gYXMgaXQgZG9lcyB3aGVu
IGFzbSBpcyBub3QgdXNlZA0KSXQgbG9va3MgbGlrZSB0aGUgIiBpbmZpbml0
ZSBsb29wIiBpcyBub3Qgcm9vdCBjYXVzZS4gDQoNCmlubGluZSB1aW50NjRf
dCB0ZXN0X2FzbV9pbnNpZGVfbG9vcCh1aW50NjRfdCBpZHgpIHsNCiAgICB1
aW50NjRfdCByZXN1bHQ7DQogICAgZm9yKCBpbnQgaSA9IDA7IGkgPCBjYXBh
Y2l0eTsgKytpICkNCiAgICB7DQogICAgICAgIGFzbSAoIm1vdnEgKCUxLCUy
LDgpLCAlMCIgOiAiPXIiIChyZXN1bHQpIDogInIiIChvYmplY3RzKSwgInIi
IChpZHgpICk7DQogICAgICAgIGlmKCByZXN1bHQgPiAxMjggKQ0KICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgKytpZHg7DQogICAgfQ0K
ICAgIHJldHVybiAwOw0KfQ0KDQpEdW1wIG9mIGFzc2VtYmxlciBjb2RlIGZv
ciBmdW5jdGlvbiBfWjI4Y29tcGlsZV90ZXN0X2FzbV9pbnNpZGVfbG9vcHY6
DQogICAweDAwMDAwMDAwMDA0MDBiNDAgPCswPjoJeG9yICAgICVlYXgsJWVh
eA0KICAgMHgwMDAwMDAwMDAwNDAwYjQyIDwrMj46CW1vdiAgICAkMHg2MDIw
ODAsJWVkeA0KICAgMHgwMDAwMDAwMDAwNDAwYjQ3IDwrNz46CW1vdiAgICAo
JXJkeCwlcmF4LDgpLCVyY3gNCiAgIDB4MDAwMDAwMDAwMDQwMGI0YiA8KzEx
PjoJY21wICAgICQweDgwLCVyY3gNCiAgIDB4MDAwMDAwMDAwMDQwMGI1MiA8
KzE4PjoJamEgICAgIDB4NDAwYzM4IDxfWjI4Y29tcGlsZV90ZXN0X2FzbV9p
bnNpZGVfbG9vcHYrMjQ4Pg0KICAgMHgwMDAwMDAwMDAwNDAwYjU4IDwrMjQ+
Ogltb3YgICAgJDB4MSwlZWF4DQogICAweDAwMDAwMDAwMDA0MDBiNWQgPCsy
OT46CW1vdiAgICAoJXJkeCwlcmF4LDgpLCVyc2kNCiAgIDB4MDAwMDAwMDAw
MDQwMGI2MSA8KzMzPjoJY21wICAgICQweDgwLCVyc2kNCiAgIDB4MDAwMDAw
MDAwMDQwMGI2OCA8KzQwPjoJamEgICAgIDB4NDAwYzM4IDxfWjI4Y29tcGls
ZV90ZXN0X2FzbV9pbnNpZGVfbG9vcHYrMjQ4Pg0KICAgMHgwMDAwMDAwMDAw
NDAwYjZlIDwrNDY+OglsZWEgICAgMHgxKCVyYXgpLCVyZGkNCiAgIDB4MDAw
MDAwMDAwMDQwMGI3MiA8KzUwPjoJbW92ICAgICglcmR4LCVyZGksOCksJXI4
DQogICAweDAwMDAwMDAwMDA0MDBiNzYgPCs1ND46CWNtcCAgICAkMHg4MCwl
cjgNCiAgIDB4MDAwMDAwMDAwMDQwMGI3ZCA8KzYxPjoJamEgICAgIDB4NDAw
YzM4IDxfWjI4Y29tcGlsZV90ZXN0X2FzbV9pbnNpZGVfbG9vcHYrMjQ4Pg0K
ICAgMHgwMDAwMDAwMDAwNDAwYjgzIDwrNjc+OglsZWEgICAgMHgyKCVyYXgp
LCVyOQ0KICAgMHgwMDAwMDAwMDAwNDAwYjg3IDwrNzE+Ogltb3YgICAgKCVy
ZHgsJXI5LDgpLCVyMTANCiAgIDB4MDAwMDAwMDAwMDQwMGI4YiA8Kzc1PjoJ
Y21wICAgICQweDgwLCVyMTANCiAgIDB4MDAwMDAwMDAwMDQwMGI5MiA8Kzgy
PjoJamEgICAgIDB4NDAwYzM4IDxfWjI4Y29tcGlsZV90ZXN0X2FzbV9pbnNp
ZGVfbG9vcHYrMjQ4Pg0KICAgMHgwMDAwMDAwMDAwNDAwYjk4IDwrODg+Ogls
ZWEgICAgMHgzKCVyYXgpLCVyMTENCiAgIDB4MDAwMDAwMDAwMDQwMGI5YyA8
KzkyPjoJbW92ICAgICglcmR4LCVyMTEsOCksJXJjeA0KICAgMHgwMDAwMDAw
MDAwNDAwYmEwIDwrOTY+OgljbXAgICAgJDB4ODAsJXJjeA0KICAgMHgwMDAw
MDAwMDAwNDAwYmE3IDwrMTAzPjoJamEgICAgIDB4NDAwYzM4IDxfWjI4Y29t
cGlsZV90ZXN0X2FzbV9pbnNpZGVfbG9vcHYrMjQ4Pg0KICAgMHgwMDAwMDAw
MDAwNDAwYmFkIDwrMTA5PjoJbGVhICAgIDB4NCglcmF4KSwlcnNpDQogICAw
eDAwMDAwMDAwMDA0MDBiYjEgPCsxMTM+Ogltb3YgICAgKCVyZHgsJXJzaSw4
KSwlcjgNCiAgIDB4MDAwMDAwMDAwMDQwMGJiNSA8KzExNz46CWNtcCAgICAk
MHg4MCwlcjgNCiAgIDB4MDAwMDAwMDAwMDQwMGJiYyA8KzEyND46CWphICAg
ICAweDQwMGMzOCA8X1oyOGNvbXBpbGVfdGVzdF9hc21faW5zaWRlX2xvb3B2
KzI0OD4NCiAgIDB4MDAwMDAwMDAwMDQwMGJiZSA8KzEyNj46CWxlYSAgICAw
eDUoJXJheCksJXI5DQogICAweDAwMDAwMDAwMDA0MDBiYzIgPCsxMzA+Oglt
b3YgICAgKCVyZHgsJXI5LDgpLCVyMTANCiAgIDB4MDAwMDAwMDAwMDQwMGJj
NiA8KzEzND46CWNtcCAgICAkMHg4MCwlcjEwDQogICAweDAwMDAwMDAwMDA0
MDBiY2QgPCsxNDE+OglqYSAgICAgMHg0MDBjMzggPF9aMjhjb21waWxlX3Rl
c3RfYXNtX2luc2lkZV9sb29wdisyNDg+DQogICAweDAwMDAwMDAwMDA0MDBi
Y2YgPCsxNDM+OglsZWEgICAgMHg2KCVyYXgpLCVyMTENCiAgIDB4MDAwMDAw
MDAwMDQwMGJkMyA8KzE0Nz46CW1vdiAgICAoJXJkeCwlcjExLDgpLCVyY3gN
CiAgIDB4MDAwMDAwMDAwMDQwMGJkNyA8KzE1MT46CWNtcCAgICAkMHg4MCwl
cmN4DQogICAweDAwMDAwMDAwMDA0MDBiZGUgPCsxNTg+OglqYSAgICAgMHg0
MDBjMzggPF9aMjhjb21waWxlX3Rlc3RfYXNtX2luc2lkZV9sb29wdisyNDg+
DQogICAweDAwMDAwMDAwMDA0MDBiZTAgPCsxNjA+OglsZWEgICAgMHg3KCVy
YXgpLCVyc2kNCiAgIDB4MDAwMDAwMDAwMDQwMGJlNCA8KzE2ND46CW1vdiAg
ICAoJXJkeCwlcnNpLDgpLCVyOA0KICAgMHgwMDAwMDAwMDAwNDAwYmU4IDwr
MTY4PjoJY21wICAgICQweDgwLCVyOA0KICAgMHgwMDAwMDAwMDAwNDAwYmVm
IDwrMTc1PjoJamEgICAgIDB4NDAwYzM4IDxfWjI4Y29tcGlsZV90ZXN0X2Fz
bV9pbnNpZGVfbG9vcHYrMjQ4Pg0KICAgMHgwMDAwMDAwMDAwNDAwYmYxIDwr
MTc3PjoJbGVhICAgIDB4OCglcmF4KSwlcjkNCiAgIDB4MDAwMDAwMDAwMDQw
MGJmNSA8KzE4MT46CW1vdiAgICAoJXJkeCwlcjksOCksJXIxMA0KICAgMHgw
MDAwMDAwMDAwNDAwYmY5IDwrMTg1PjoJY21wICAgICQweDgwLCVyMTANCiAg
IDB4MDAwMDAwMDAwMDQwMGMwMCA8KzE5Mj46CWphICAgICAweDQwMGMzOCA8
X1oyOGNvbXBpbGVfdGVzdF9hc21faW5zaWRlX2xvb3B2KzI0OD4NCiAgIDB4
MDAwMDAwMDAwMDQwMGMwMiA8KzE5ND46CWFkZCAgICAkMHg5LCVyYXgNCiAg
IDB4MDAwMDAwMDAwMDQwMGMwNiA8KzE5OD46CW1vdiAgICAoJXJkeCwlcmF4
LDgpLCVyYXgNCiAgIDB4MDAwMDAwMDAwMDQwMGMwYSA8KzIwMj46CWNtcCAg
ICAkMHg4MCwlcmF4DQogICAweDAwMDAwMDAwMDA0MDBjMTAgPCsyMDg+Oglq
YSAgICAgMHg0MDBjMzggPF9aMjhjb21waWxlX3Rlc3RfYXNtX2luc2lkZV9s
b29wdisyNDg+DQogICAweDAwMDAwMDAwMDA0MDBjMTIgPCsyMTA+OglsZWEg
ICAgMHg5KCVyZGkpLCVyMTENCiAgIDB4MDAwMDAwMDAwMDQwMGMxNiA8KzIx
ND46CW1vdiAgICAoJXJkeCwlcjExLDgpLCVyY3gNCiAgIDB4MDAwMDAwMDAw
MDQwMGMxYSA8KzIxOD46CWNtcCAgICAkMHg4MCwlcmN4DQogICAweDAwMDAw
MDAwMDA0MDBjMjEgPCsyMjU+OglqYSAgICAgMHg0MDBjMzggPF9aMjhjb21w
aWxlX3Rlc3RfYXNtX2luc2lkZV9sb29wdisyNDg+DQogICAweDAwMDAwMDAw
MDA0MDBjMjMgPCsyMjc+OglsZWEgICAgMHhhKCVyZGkpLCVyYXgNCiAgIDB4
MDAwMDAwMDAwMDQwMGMyNyA8KzIzMT46CWNtcCAgICAkMHg0MDAsJXJheA0K
ICAgMHgwMDAwMDAwMDAwNDAwYzJkIDwrMjM3PjoJam5lICAgIDB4NDAwYjVk
IDxfWjI4Y29tcGlsZV90ZXN0X2FzbV9pbnNpZGVfbG9vcHYrMjk+DQogICAw
eDAwMDAwMDAwMDA0MDBjMzMgPCsyNDM+OglyZXB6IHJldHEgDQogICAweDAw
MDAwMDAwMDA0MDBjMzUgPCsyNDU+Oglub3BsICAgKCVyYXgpDQogICAweDAw
MDAwMDAwMDA0MDBjMzggPCsyNDg+OglyZXB6IHJldHENCg0KLS0tLS1Pcmln
aW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEFuZHJldyBQaW5za2kgW21haWx0
bzpwaW5za2lhQGdtYWlsLmNvbV0gDQpTZW50OiBTYXR1cmRheSwgT2N0b2Jl
ciAwNywgMjAxNyAzOjA0IFBNDQpUbzogU2FsZHlya2luZSwgTWlraGFpbCBb
U2VjIERpdl0NCkNjOiBnY2MtYnVnc0BnY2MuZ251Lm9yZw0KU3ViamVjdDog
UmU6IEdDQyBkb2VzIG5vdCBvcHRpbWl6ZSBvdXQgZnVuY3Rpb25zIHdpdGhv
dXQgc2lkZSBlZmZlY3RzIHdpdGggYXNtIHN0YXRlbWVudHMgaW5zaWRlIGxv
b3AgZXZlbiBpZiByZXR1cm4gdmVsdWUgaXMgaWdub3JlZA0KDQpPbiBTYXQs
IE9jdCA3LCAyMDE3IGF0IDg6MzkgQU0sIFNhbGR5cmtpbmUsIE1pa2hhaWwN
CjxNaWtoYWlsLlNhbGR5cmtpbmVAZ3MuY29tPiB3cm90ZToNCj4gZysrIChH
Q0MpIDYuMy4xIDIwMTcwMjE2IChSZWQgSGF0IDYuMy4xLTMpDQo+DQo+IElu
IHRoZSBiZWxvdyBjYXNlIGNvbXBpbGVfdGVzdF9hc21faW5zaWRlX2xvb3Ag
aW52b2tlcyB0ZXN0X2FzbV9pbnNpZGVfbG9vcCBhbmQgaWdub3JlcyByZXN1
bHRzLg0KPiBUaGUgY2FsbCBpbnRvIHRlc3RfYXNtX2luc2lkZV9sb29wIGlz
IGV4cGVjdGVkIHRvIGJlIGVsaW1pbmF0ZWQgc2luY2UgcmV0dXJuIHZhbHVl
IGlzIG5vdCB1c2VkIGFuZCB0aGVyZSBpcyBubyBzaWRlIGVmZmVjdA0KPiBU
aGUgY2FsbCBlbGltaW5hdGlvbiB3b3JrcyBmaW5lIHdpdGhvdXQgYXNtIGFu
ZCB3aXRob3V0IGxvb3ANCj4gSXQgZG9lcyBub3Qgd29yayB3aXRoIGFzbSBp
bnNpZGUgbG9vcA0KDQpCZWNhdXNlIHRoZSBsb29wIGNvdWxkIGJlIGFuIGlu
ZmluaXRlIGxvb3AgYW5kIEdDQyBkb2VzIG5vdCBrbm93IGhvdw0KbWFueSB0
aW1lcyB0aGUgaW5saW5lLWFzbSBpcyBnb2luZyB0byBiZSBjYWxsZWQgYW5k
IGlmIHRoZXJlIGFyZSBvdGhlcg0Kc2lkZSBlZmZlY3RzLg0KDQpMZXQncyBs
b29rIGF0IHRoZSBmdW5jdGlvbjoNCmlubGluZSB1aW50NjRfdCB0ZXN0X2Fz
bV9pbnNpZGVfbG9vcCh1aW50NjRfdCBpZHgpIHsNCiAgICB3aGlsZSh0cnVl
KQ0KICAgIHsNCiAgICAgICAgdWludDY0X3QgcmVzdWx0Ow0KICAgICAgICBh
c20gKCJtb3ZxICglMSwlMiw4KSwgJTAiIDogIj1yIiAocmVzdWx0KSA6ICJy
IiAob2JqZWN0cyksICJyIiAoaWR4KSApOw0KICAgICAgICBpZiggcmVzdWx0
ID4gMTI4ICkNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAg
ICsraWR4Ow0KICAgIH0NCn0NCg0KVGhlIGxvb3AgaXMgb25seSBicm9rZW4g
b3V0IG9mIHdoZW4gcmVzdWx0IGlzID4gMTI4LiAgcmVzdWx0IGZyb20gdGhl
DQppbmxpbmUtYXNtIGlzIHVzZWQgYXMgdGhlIGJyZWFrb3V0IGZyb20gdGhl
IGxvb3AuDQoNClRoYW5rcywNCkFuZHJldw0KDQo+DQo+IFRFU1QgQ09ERQ0K
Pg0KPiAjaW5jbHVkZSA8aW9zdHJlYW0+DQo+ICNpbmNsdWRlIDxhc3NlcnQu
aD4NCj4NCj4gdXNpbmcgbmFtZXNwYWNlIHN0ZDsNCj4gY29uc3RleHByIHN0
YXRpYyBzaXplX3QgY2FwYWNpdHkgPSAxMDI0Ow0KPiB1aW50NjRfdCBvYmpl
Y3RzW2NhcGFjaXR5XTsNCj4NCj4gLy8gVEhFIEZVTkNUSU9OIElTIEVMSU1J
TkFURUQgQlkgQ09NUElMRVIgSUYgT1VUUFVUIElTIE5PVCBVU0VEDQo+IGlu
bGluZSB1aW50NjRfdCB0ZXN0X25vbG9vcCh1aW50NjRfdCBpZHgpIHsNCj4g
ICAgIHVpbnQ2NF90IHJlc3VsdDsNCj4gICAgIGFzbSAoIm1vdnEgKCUxLCUy
LDgpLCAlMCIgOiAiPXIiIChyZXN1bHQpIDogInIiIChvYmplY3RzKSwgInIi
IChpZHgpICk7DQo+ICAgICBpZiggcmVzdWx0ID4gMTI4ICkNCj4gICAgICAg
ICByZXR1cm4gcmVzdWx0Ow0KPiAgICAgcmV0dXJuIDA7DQo+IH0NCj4NCj4g
Ly8gVEhFIEZVTkNUSU9OIElTIEVMSU1JTkFURUQgQlkgQ09NUElMRVIgSUYg
T1VUUFVUIElTIE5PVCBVU0VEDQo+IGlubGluZSB1aW50NjRfdCB0ZXN0X25v
YXNtKHVpbnQ2NF90IGlkeCkgew0KPiAgICAgd2hpbGUodHJ1ZSkNCj4gICAg
IHsNCj4gICAgICAgICBpZiggb2JqZWN0c1tpZHhdID4gMTI4ICkNCj4gICAg
ICAgICAgICAgcmV0dXJuIG9iamVjdHNbaWR4XTsNCj4gICAgICAgICArK2lk
eDsNCj4gICAgIH0NCj4gfQ0KPg0KPiAvLyBUSEUgRlVOQ1RJT04gSVMgS0VF
UFQgRVZFTiBXSEVOIElGIFJFU1VMVCBJUyBOT1QgVVNFRCAtIEFTTSBJTlNJ
REUgTE9PUCBDQVVTSU5HIFRIRSBJU1NVRQ0KPiBpbmxpbmUgdWludDY0X3Qg
dGVzdF9hc21faW5zaWRlX2xvb3AodWludDY0X3QgaWR4KSB7DQo+ICAgICB3
aGlsZSh0cnVlKQ0KPiAgICAgew0KPiAgICAgICAgIHVpbnQ2NF90IHJlc3Vs
dDsNCj4gICAgICAgICBhc20gKCJtb3ZxICglMSwlMiw4KSwgJTAiIDogIj1y
IiAocmVzdWx0KSA6ICJyIiAob2JqZWN0cyksICJyIiAoaWR4KSApOw0KPiAg
ICAgICAgIGlmKCByZXN1bHQgPiAxMjggKQ0KPiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0Ow0KPiAgICAgICAgICsraWR4Ow0KPiAgICAgfQ0KPiB9DQo+
DQo+IHZvaWQgaW5pdCgpIHsNCj4gICAgIHNyYW5kKHRpbWUobnVsbHB0cikp
Ow0KPiAgICAgZm9yKCBzaXplX3QgaSA9IDA7IGkgPCBjYXBhY2l0eSAtIDE7
ICsraSApDQo+ICAgICAgICAgb2JqZWN0c1tpXSA9IHJhbmRvbSgpICUgMjU2
Ow0KPiAgICAgb2JqZWN0c1tjYXBhY2l0eS0xXSA9IDI1NTsNCj4gfQ0KPg0K
PiAvLyBURVRTIFRIQVQgdGVzdF9ub2FzbSBBTkQgdGVzdF9hc21faW5zaWRl
X2xvb3AgUFJPRFVDRSBTQU1FIFJFU1VMVA0KPiB2b2lkIHNhbml0eV90ZXN0
KCkgew0KPiAgICAgZm9yKCBzaXplX3QgaSA9IDA7IGkgPCBjYXBhY2l0eTsg
KytpICkgew0KPiAgICAgICAgIGFzc2VydCggdGVzdF9ub2FzbShpKSA9PSB0
ZXN0X2FzbV9pbnNpZGVfbG9vcChpKSk7DQo+ICAgICB9DQo+IH0NCj4NCj4g
dm9pZCBjb21waWxlX3Rlc3Rfbm9hc20oKSB7DQo+ICAgICB0ZXN0X25vYXNt
KDApOw0KPiB9DQo+DQo+IHZvaWQgY29tcGlsZV90ZXN0X25vbG9vcCgpIHsN
Cj4gICAgIHRlc3Rfbm9sb29wKDApOw0KPiB9DQo+DQo+IHZvaWQgY29tcGls
ZV90ZXN0X2FzbV9pbnNpZGVfbG9vcCgpIHsNCj4gICAgIHRlc3RfYXNtX2lu
c2lkZV9sb29wKDApOw0KPiB9DQo+DQo+IGludCBtYWluKCBpbnQgYXJnYywg
Y2hhciogYXJndltdICkgew0KPiAgICAgaW5pdCgpOw0KPiAgICAgc2FuaXR5
X3Rlc3QoKTsNCj4gICAgIGNvbXBpbGVfdGVzdF9ub2FzbSgpOw0KPiAgICAg
Y29tcGlsZV90ZXN0X25vbG9vcCgpOw0KPiAgICAgY29tcGlsZV90ZXN0X2Fz
bV9pbnNpZGVfbG9vcCgpOw0KPiB9DQo+DQo+IENPTVBJTEFUSU9OIEFORCBE
SVNBU1NFTUJMRVIgUkVTVUxUUzoNCj4NCj4gL29wdC9yaC9kZXZ0b29sc2V0
LTYvL3Jvb3QvYmluL2crKyAgLU8zIC1mdW5yb2xsLWxvb3BzICBsb29wX29w
dGltaXphdGlvbi5jcHA7IGdkYiAtYmF0Y2ggLWV4ICJmaWxlIGEub3V0IiAt
ZXggImRpc2FzIGNvbXBpbGVfdGVzdF9ub2FzbSIgLWV4ICJkaXNhcyBjb21w
aWxlX3Rlc3Rfbm9sb29wIiAtZXggImRpc2FzIGNvbXBpbGVfdGVzdF9hc21f
aW5zaWRlX2xvb3AiDQo+IER1bXAgb2YgYXNzZW1ibGVyIGNvZGUgZm9yIGZ1
bmN0aW9uIF9aMThjb21waWxlX3Rlc3Rfbm9hc212Og0KPiAgICAweDAwMDAw
MDAwMDA0MDA5NzAgPCswPjogICAgIHJlcHogcmV0cQ0KPiBFbmQgb2YgYXNz
ZW1ibGVyIGR1bXAuDQo+IER1bXAgb2YgYXNzZW1ibGVyIGNvZGUgZm9yIGZ1
bmN0aW9uIF9aMTljb21waWxlX3Rlc3Rfbm9sb29wdjoNCj4gICAgMHgwMDAw
MDAwMDAwNDAwOTgwIDwrMD46ICAgICByZXB6IHJldHENCj4gRW5kIG9mIGFz
c2VtYmxlciBkdW1wLg0KPiBEdW1wIG9mIGFzc2VtYmxlciBjb2RlIGZvciBm
dW5jdGlvbiBfWjI4Y29tcGlsZV90ZXN0X2FzbV9pbnNpZGVfbG9vcHY6DQo+
ICAgIDB4MDAwMDAwMDAwMDQwMDk5MCA8KzA+OiAgICAgeG9yICAgICVlZHgs
JWVkeA0KPiAgICAweDAwMDAwMDAwMDA0MDA5OTIgPCsyPjogICAgIG1vdiAg
ICAkMHg2MDEwODAsJWVjeA0KPiAgICAweDAwMDAwMDAwMDA0MDA5OTcgPCs3
PjogICAgIHhvciAgICAlZWF4LCVlYXgNCj4gICAgMHgwMDAwMDAwMDAwNDAw
OTk5IDwrOT46ICAgICBtb3YgICAgKCVyY3gsJXJkeCw4KSwlcnNpDQo+ICAg
IDB4MDAwMDAwMDAwMDQwMDk5ZCA8KzEzPjogICAgY21wICAgICQweDgwLCVy
c2kNCj4gICAgMHgwMDAwMDAwMDAwNDAwOWE0IDwrMjA+OiAgICBqYSAgICAg
MHg0MDA5YzEgPF9aMjhjb21waWxlX3Rlc3RfYXNtX2luc2lkZV9sb29wdis0
OT4NCj4gICAgMHgwMDAwMDAwMDAwNDAwOWE2IDwrMjI+OiAgICBub3B3ICAg
JWNzOjB4MCglcmF4LCVyYXgsMSkNCj4gICAgMHgwMDAwMDAwMDAwNDAwOWIw
IDwrMzI+OiAgICBhZGQgICAgJDB4MSwlcmF4DQo+ICAgIDB4MDAwMDAwMDAw
MDQwMDliNCA8KzM2PjogICAgbW92ICAgICglcmN4LCVyYXgsOCksJXJkaQ0K
PiAgICAweDAwMDAwMDAwMDA0MDA5YjggPCs0MD46ICAgIGNtcCAgICAkMHg4
MCwlcmRpDQo+ICAgIDB4MDAwMDAwMDAwMDQwMDliZiA8KzQ3PjogICAgamJl
ICAgIDB4NDAwOWIwIDxfWjI4Y29tcGlsZV90ZXN0X2FzbV9pbnNpZGVfbG9v
cHYrMzI+DQo+ICAgIDB4MDAwMDAwMDAwMDQwMDljMSA8KzQ5PjogICAgcmVw
eiByZXRxDQo+IEVuZCBvZiBhc3NlbWJsZXIgZHVtcC4NCj4NCj4NCg=>From gcc-bugs-return-577693-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Oct 07 21:32:51 2017
Return-Path: <gcc-bugs-return-577693-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 3642 invoked by alias); 7 Oct 2017 21:32:51 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 3630 invoked by uid 89); 7 Oct 2017 21:32:51 -0000
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=-6.2 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammyX-HELO: mail-wm0-f67.google.com
Received: from mail-wm0-f67.google.com (HELO mail-wm0-f67.google.com) (74.125.82.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 07 Oct 2017 21:32:48 +0000
Received: by mail-wm0-f67.google.com with SMTP id l10so12672979wmg.1        for <gcc-bugs@gcc.gnu.org>; Sat, 07 Oct 2017 14:32:48 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;        d\x1e100.net; s 161025;        h=x-gm-message-state:mime-version:in-reply-to:references:from:date         :message-id:subject:to:cc;        bh=UbMQIIxqrBzpzk/GrBLYiKDWQfbisL16sNbBy3gPDZc=;        b=oIPdMFW2+1sckUbx0zWuI+dDbUwpONyZWiR+D5QuR4+wiac1In7gnXcmxHfEa8AxlU         xTf8QwVFQAclISArax+vnCoUXgo8oTGZ3YEOUZhE40znUTED040Y9AMkvvO2Ei8sM1Mo         P4b8T821GW4xHnXKKlY+Rzc+R2wZw6/AY7J5qU+pog/cFJ+mYl1sGHlgwS0chIT9sL05         4COz4D6M0a161HNMgzELWa9H7u1127xaBaU7iyhdBj0CHSv2tKKe72HQG0Hc7YievsTG         fahM/J9/NQrekh9NNQJgc/j7nEPb1nWLncH1u5+/ObXhJLK8GBaXbXZrTyf2T7Nizo0e         NKlA=X-Gm-Message-State: AMCzsaVwP2iQNgYa3RNKvu5NvZiCsXOgFbrsxbBvX6+hfDAZn1d0JcN4	vTFrA5ipl65RFAswUjOqDtRHtGQp8PbcIeBzlpEt9w=X-Google-Smtp-Source: AOwi7QDpLUravtIMTJsUugfSdc+yEQnpfyEh3twAN4VijSvI/ad362Rca7hiLJ/6g2ztZTMbc7pg/L7E07XmkzHw/PAX-Received: by 10.223.133.147 with SMTP id 19mr5186022wrt.184.1507411966584; Sat, 07 Oct 2017 14:32:46 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.223.169.52 with HTTP; Sat, 7 Oct 2017 14:32:46 -0700 (PDT)
In-Reply-To: <7822e16731154ad39b004d792dbf578d@gsdgamp16etn2.firmwide.corp.gs.com>
References: <13c09d77e3db4aabbb0d8a1fbf81c3a7@gsdgamp16etn2.firmwide.corp.gs.com> <e00b20ce8ed9469cb9812991f29151aa@gsdgamp16etn2.firmwide.corp.gs.com> <CA+=Sn1kF7Lz=Z7AG2XtCWnRi70w1DcHiAinAKi43ESVfrjnx+A@mail.gmail.com> <7822e16731154ad39b004d792dbf578d@gsdgamp16etn2.firmwide.corp.gs.com>
From: Andrew Pinski <pinskia@gmail.com>
Date: Sat, 07 Oct 2017 21:32:00 -0000
Message-ID: <CA+=Sn1mCnE1_9DntKdNeGxMcWYX0A4XrVbqQPHgoy8hVpKLHtQ@mail.gmail.com>
Subject: Re: GCC does not optimize out functions without side effects with asm statements inside loop even if return velue is ignored
To: "Saldyrkine, Mikhail" <Mikhail.Saldyrkine@gs.com>
Cc: "gcc-bugs@gcc.gnu.org" <gcc-bugs@gcc.gnu.org>
Content-Type: text/plain; charset="UTF-8"
X-IsSubscribed: yes
X-SW-Source: 2017-10/txt/msg00753.txt.bz2
Content-length: 9025

On Sat, Oct 7, 2017 at 2:22 PM, Saldyrkine, Mikhail
<Mikhail.Saldyrkine@gs.com> wrote:
> The " uint64_t test_noasm(uint64_t idx)" has same loop and the function is optimized out.

There is a difference there, objects is limited to 1024.  Loading past
the array bounds is undefined.

Thanks,
Andrew


> I've changed code to constraint the loop iterations and compiler:
> - unrolled loop
> - did not eliminate the function as it does when asm is not used
> It looks like the " infinite loop" is not root cause.
>
> inline uint64_t test_asm_inside_loop(uint64_t idx) {
>     uint64_t result;
>     for( int i = 0; i < capacity; ++i )
>     {
>         asm ("movq (%1,%2,8), %0" : "=r" (result) : "r" (objects), "r" (idx) );
>         if( result > 128 )
>             return result;
>         ++idx;
>     }
>     return 0;
> }
>
> Dump of assembler code for function _Z28compile_test_asm_inside_loopv:
>    0x0000000000400b40 <+0>:     xor    %eax,%eax
>    0x0000000000400b42 <+2>:     mov    $0x602080,%edx
>    0x0000000000400b47 <+7>:     mov    (%rdx,%rax,8),%rcx
>    0x0000000000400b4b <+11>:    cmp    $0x80,%rcx
>    0x0000000000400b52 <+18>:    ja     0x400c38 <_Z28compile_test_asm_inside_loopv+248>
>    0x0000000000400b58 <+24>:    mov    $0x1,%eax
>    0x0000000000400b5d <+29>:    mov    (%rdx,%rax,8),%rsi
>    0x0000000000400b61 <+33>:    cmp    $0x80,%rsi
>    0x0000000000400b68 <+40>:    ja     0x400c38 <_Z28compile_test_asm_inside_loopv+248>
>    0x0000000000400b6e <+46>:    lea    0x1(%rax),%rdi
>    0x0000000000400b72 <+50>:    mov    (%rdx,%rdi,8),%r8
>    0x0000000000400b76 <+54>:    cmp    $0x80,%r8
>    0x0000000000400b7d <+61>:    ja     0x400c38 <_Z28compile_test_asm_inside_loopv+248>
>    0x0000000000400b83 <+67>:    lea    0x2(%rax),%r9
>    0x0000000000400b87 <+71>:    mov    (%rdx,%r9,8),%r10
>    0x0000000000400b8b <+75>:    cmp    $0x80,%r10
>    0x0000000000400b92 <+82>:    ja     0x400c38 <_Z28compile_test_asm_inside_loopv+248>
>    0x0000000000400b98 <+88>:    lea    0x3(%rax),%r11
>    0x0000000000400b9c <+92>:    mov    (%rdx,%r11,8),%rcx
>    0x0000000000400ba0 <+96>:    cmp    $0x80,%rcx
>    0x0000000000400ba7 <+103>:   ja     0x400c38 <_Z28compile_test_asm_inside_loopv+248>
>    0x0000000000400bad <+109>:   lea    0x4(%rax),%rsi
>    0x0000000000400bb1 <+113>:   mov    (%rdx,%rsi,8),%r8
>    0x0000000000400bb5 <+117>:   cmp    $0x80,%r8
>    0x0000000000400bbc <+124>:   ja     0x400c38 <_Z28compile_test_asm_inside_loopv+248>
>    0x0000000000400bbe <+126>:   lea    0x5(%rax),%r9
>    0x0000000000400bc2 <+130>:   mov    (%rdx,%r9,8),%r10
>    0x0000000000400bc6 <+134>:   cmp    $0x80,%r10
>    0x0000000000400bcd <+141>:   ja     0x400c38 <_Z28compile_test_asm_inside_loopv+248>
>    0x0000000000400bcf <+143>:   lea    0x6(%rax),%r11
>    0x0000000000400bd3 <+147>:   mov    (%rdx,%r11,8),%rcx
>    0x0000000000400bd7 <+151>:   cmp    $0x80,%rcx
>    0x0000000000400bde <+158>:   ja     0x400c38 <_Z28compile_test_asm_inside_loopv+248>
>    0x0000000000400be0 <+160>:   lea    0x7(%rax),%rsi
>    0x0000000000400be4 <+164>:   mov    (%rdx,%rsi,8),%r8
>    0x0000000000400be8 <+168>:   cmp    $0x80,%r8
>    0x0000000000400bef <+175>:   ja     0x400c38 <_Z28compile_test_asm_inside_loopv+248>
>    0x0000000000400bf1 <+177>:   lea    0x8(%rax),%r9
>    0x0000000000400bf5 <+181>:   mov    (%rdx,%r9,8),%r10
>    0x0000000000400bf9 <+185>:   cmp    $0x80,%r10
>    0x0000000000400c00 <+192>:   ja     0x400c38 <_Z28compile_test_asm_inside_loopv+248>
>    0x0000000000400c02 <+194>:   add    $0x9,%rax
>    0x0000000000400c06 <+198>:   mov    (%rdx,%rax,8),%rax
>    0x0000000000400c0a <+202>:   cmp    $0x80,%rax
>    0x0000000000400c10 <+208>:   ja     0x400c38 <_Z28compile_test_asm_inside_loopv+248>
>    0x0000000000400c12 <+210>:   lea    0x9(%rdi),%r11
>    0x0000000000400c16 <+214>:   mov    (%rdx,%r11,8),%rcx
>    0x0000000000400c1a <+218>:   cmp    $0x80,%rcx
>    0x0000000000400c21 <+225>:   ja     0x400c38 <_Z28compile_test_asm_inside_loopv+248>
>    0x0000000000400c23 <+227>:   lea    0xa(%rdi),%rax
>    0x0000000000400c27 <+231>:   cmp    $0x400,%rax
>    0x0000000000400c2d <+237>:   jne    0x400b5d <_Z28compile_test_asm_inside_loopv+29>
>    0x0000000000400c33 <+243>:   repz retq
>    0x0000000000400c35 <+245>:   nopl   (%rax)
>    0x0000000000400c38 <+248>:   repz retq
>
> -----Original Message-----
> From: Andrew Pinski [mailto:pinskia@gmail.com]
> Sent: Saturday, October 07, 2017 3:04 PM
> To: Saldyrkine, Mikhail [Sec Div]
> Cc: gcc-bugs@gcc.gnu.org
> Subject: Re: GCC does not optimize out functions without side effects with asm statements inside loop even if return velue is ignored
>
> On Sat, Oct 7, 2017 at 8:39 AM, Saldyrkine, Mikhail
> <Mikhail.Saldyrkine@gs.com> wrote:
>> g++ (GCC) 6.3.1 20170216 (Red Hat 6.3.1-3)
>>
>> In the below case compile_test_asm_inside_loop invokes test_asm_inside_loop and ignores results.
>> The call into test_asm_inside_loop is expected to be eliminated since return value is not used and there is no side effect
>> The call elimination works fine without asm and without loop
>> It does not work with asm inside loop
>
> Because the loop could be an infinite loop and GCC does not know how
> many times the inline-asm is going to be called and if there are other
> side effects.
>
> Let's look at the function:
> inline uint64_t test_asm_inside_loop(uint64_t idx) {
>     while(true)
>     {
>         uint64_t result;
>         asm ("movq (%1,%2,8), %0" : "=r" (result) : "r" (objects), "r" (idx) );
>         if( result > 128 )
>             return result;
>         ++idx;
>     }
> }
>
> The loop is only broken out of when result is > 128.  result from the
> inline-asm is used as the breakout from the loop.
>
> Thanks,
> Andrew
>
>>
>> TEST CODE
>>
>> #include <iostream>
>> #include <assert.h>
>>
>> using namespace std;
>> constexpr static size_t capacity = 1024;
>> uint64_t objects[capacity];
>>
>> // THE FUNCTION IS ELIMINATED BY COMPILER IF OUTPUT IS NOT USED
>> inline uint64_t test_noloop(uint64_t idx) {
>>     uint64_t result;
>>     asm ("movq (%1,%2,8), %0" : "=r" (result) : "r" (objects), "r" (idx) );
>>     if( result > 128 )
>>         return result;
>>     return 0;
>> }
>>
>> // THE FUNCTION IS ELIMINATED BY COMPILER IF OUTPUT IS NOT USED
>> inline uint64_t test_noasm(uint64_t idx) {
>>     while(true)
>>     {
>>         if( objects[idx] > 128 )
>>             return objects[idx];
>>         ++idx;
>>     }
>> }
>>
>> // THE FUNCTION IS KEEPT EVEN WHEN IF RESULT IS NOT USED - ASM INSIDE LOOP CAUSING THE ISSUE
>> inline uint64_t test_asm_inside_loop(uint64_t idx) {
>>     while(true)
>>     {
>>         uint64_t result;
>>         asm ("movq (%1,%2,8), %0" : "=r" (result) : "r" (objects), "r" (idx) );
>>         if( result > 128 )
>>             return result;
>>         ++idx;
>>     }
>> }
>>
>> void init() {
>>     srand(time(nullptr));
>>     for( size_t i = 0; i < capacity - 1; ++i )
>>         objects[i] = random() % 256;
>>     objects[capacity-1] = 255;
>> }
>>
>> // TETS THAT test_noasm AND test_asm_inside_loop PRODUCE SAME RESULT
>> void sanity_test() {
>>     for( size_t i = 0; i < capacity; ++i ) {
>>         assert( test_noasm(i) == test_asm_inside_loop(i));
>>     }
>> }
>>
>> void compile_test_noasm() {
>>     test_noasm(0);
>> }
>>
>> void compile_test_noloop() {
>>     test_noloop(0);
>> }
>>
>> void compile_test_asm_inside_loop() {
>>     test_asm_inside_loop(0);
>> }
>>
>> int main( int argc, char* argv[] ) {
>>     init();
>>     sanity_test();
>>     compile_test_noasm();
>>     compile_test_noloop();
>>     compile_test_asm_inside_loop();
>> }
>>
>> COMPILATION AND DISASSEMBLER RESULTS:
>>
>> /opt/rh/devtoolset-6//root/bin/g++  -O3 -funroll-loops  loop_optimization.cpp; gdb -batch -ex "file a.out" -ex "disas compile_test_noasm" -ex "disas compile_test_noloop" -ex "disas compile_test_asm_inside_loop"
>> Dump of assembler code for function _Z18compile_test_noasmv:
>>    0x0000000000400970 <+0>:     repz retq
>> End of assembler dump.
>> Dump of assembler code for function _Z19compile_test_noloopv:
>>    0x0000000000400980 <+0>:     repz retq
>> End of assembler dump.
>> Dump of assembler code for function _Z28compile_test_asm_inside_loopv:
>>    0x0000000000400990 <+0>:     xor    %edx,%edx
>>    0x0000000000400992 <+2>:     mov    $0x601080,%ecx
>>    0x0000000000400997 <+7>:     xor    %eax,%eax
>>    0x0000000000400999 <+9>:     mov    (%rcx,%rdx,8),%rsi
>>    0x000000000040099d <+13>:    cmp    $0x80,%rsi
>>    0x00000000004009a4 <+20>:    ja     0x4009c1 <_Z28compile_test_asm_inside_loopv+49>
>>    0x00000000004009a6 <+22>:    nopw   %cs:0x0(%rax,%rax,1)
>>    0x00000000004009b0 <+32>:    add    $0x1,%rax
>>    0x00000000004009b4 <+36>:    mov    (%rcx,%rax,8),%rdi
>>    0x00000000004009b8 <+40>:    cmp    $0x80,%rdi
>>    0x00000000004009bf <+47>:    jbe    0x4009b0 <_Z28compile_test_asm_inside_loopv+32>
>>    0x00000000004009c1 <+49>:    repz retq
>> End of assembler dump.
>>
>>


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2017-10-07 20:11 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <bug-82466-4@http.gcc.gnu.org/bugzilla/>
2017-10-07 20:11 ` [Bug c++/82466] Missing warning for re-declaration of built-in function as variable paolo.carlini at oracle dot com

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).