From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by sourceware.org (Postfix) with ESMTPS id A60BF385382A for ; Wed, 12 May 2021 17:17:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A60BF385382A Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 14CHF5Zb143621; Wed, 12 May 2021 17:17:02 GMT Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by userp2120.oracle.com with ESMTP id 38dk9njq5w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 May 2021 17:17:02 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 14CHFfJQ175200; Wed, 12 May 2021 17:17:02 GMT Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by userp3030.oracle.com with ESMTP id 38dfs01gp6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 May 2021 17:17:01 +0000 Received: from abhmp0010.oracle.com (abhmp0010.oracle.com [141.146.116.16]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 14CHH0gM008224; Wed, 12 May 2021 17:17:00 GMT Received: from dhcp-10-154-124-236.vpn.oracle.com (/10.154.124.236) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 12 May 2021 10:16:59 -0700 From: Qing Zhao Content-Type: multipart/mixed; boundary="Apple-Mail=_0F1E6D9F-6531-43BB-845A-DF7B7E824E75" Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.4\)) Subject: [PATCH][version 3]add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Message-Id: <52959802-6AF1-4BFC-B984-3BC495C535BD@ORACLE.COM> Date: Wed, 12 May 2021 12:16:58 -0500 Cc: kees Cook , gcc-patches Qing Zhao via To: richard Sandiford , Richard Biener X-Mailer: Apple Mail (2.3608.120.23.2.4) X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=9982 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 phishscore=0 adultscore=0 bulkscore=0 mlxscore=0 suspectscore=0 malwarescore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2105120111 X-Proofpoint-ORIG-GUID: IxZDeQuHPkYMimCJAMxmyCFF9q7wyyg8 X-Proofpoint-GUID: IxZDeQuHPkYMimCJAMxmyCFF9q7wyyg8 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=9982 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 phishscore=0 adultscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 lowpriorityscore=0 malwarescore=0 priorityscore=1501 clxscore=1015 bulkscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2105120111 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, KAM_SHORT, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 May 2021 17:17:13 -0000 --Apple-Mail=_0F1E6D9F-6531-43BB-845A-DF7B7E824E75 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hi,=20 This is the 3rd version of the patch for the new security feature for = GCC. Please take look and let me know your comments and suggestions. thanks. Qing ******Compare with the 2nd version, the following are the major changes: 1. use "lookup_attribute ("uninitialized",) directly instead of adding one new field "uninitialized" into tree_decl_with_vis. 2. update documentation to mention that the new option will not confuse -Wuninitialized, GCC still consider an auto without explicit = initializer as uninitialized. 3. change the name of "build_pattern_cst" to more specific name as "build_pattern_cst_for_auto_init". 4. handling of nested VLA; Adding new testing cases (auto-init-15/16.c) for this new handling. 5. Add new verifications of calls to .DEFERRED_INIT in tree-cfg.c; 6. in tree-sra.c, update the handling of "grp_to_be_debug_replaced", bind the lhs variable to a call to .DEFERRED_INIT. 7. In tree-ssa-structalias.c, delete = "find_func_aliases_for_deferred_init", return directly for a call to .DEFERRED_INIT in = "find_func_aliases_for_call". 8. Add more detailed comments in tree-ssa-uninit.c and tree-ssa.c to = explain the special handling on REALPART_EXPR/IMAGPRT_EXPR. 9. in build_pattern_cst_for_auto_init: BOOLEAN_TYPE will be set to zero always; INTEGER_TYPE (?and ENUMERAL_TYPE) use wi::from_buffer in order to correctly handle 128-bit integers. POINTER_TYPE will not assert on SIZE < 32. REAL_TYPE add fallback; 10. changed gcc_assert to gcc_unreachable in several places; 11. add more comments; 12. some style issue changes. ******Please see the version 2 at: https://gcc.gnu.org/pipermail/gcc-patches/2021-March/567262.html ******The following 2 items are the ones I didn=E2=80=99t addressed in = this version due to further study and might need more discussion: 1. Using __builtin_clear_padding to replace type_has_padding. My study shows: the call to __builtin_clear_padding is expanded during = gimplification phase. =20 And there is no __bultin_clear_padding expanding during rtx expanding = phase. If so, for -ftrivial-auto-var-init, padding initialization should be = done both in gimplification phase and rtx expanding phase.=20 And since the __builtin_clear_padding might not be good for rtx = expanding, reusing __builtin_clear_padding might not work. 2. Pattern init to NULLPTR_TYPE and ENUMERAL_TYPE: need more comments = from Richard Biener on this. ******The change of the 3rd version compared to the 2nd version are: --Apple-Mail=_0F1E6D9F-6531-43BB-845A-DF7B7E824E75 Content-Disposition: attachment; filename=change-against-2nd-version.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="change-against-2nd-version.patch" Content-Transfer-Encoding: quoted-printable =46rom=201b2317d1444b3ba43302223a7ba40f899ff2bdc0=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20qing=20zhao=20=0ADate:=20= Mon,=203=20May=202021=2022:40:03=20+0000=0ASubject:=20[PATCH]=20change=20= of=202nd=20version=0A=0A---=0A=20gcc/c-family/c-attribs.c=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20=206=20+-=0A=20= gcc/doc/invoke.texi=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20=206=20+-=0A=20gcc/gimplify.c=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=2024=20= ++++---=0A=20gcc/internal-fn.c=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20=202=20+-=0A=20= gcc/testsuite/c-c++-common/auto-init-15.c=20|=2013=20++++=0A=20= gcc/testsuite/c-c++-common/auto-init-16.c=20|=2013=20++++=0A=20= gcc/tree-cfg.c=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=2057=20++++++++++++-----=0A=20gcc/tree-core.h=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20=203=20+-=0A=20gcc/tree-sra.c=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=2076=20= ++++++++++++++---------=0A=20gcc/tree-ssa-structalias.c=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=2028=20+--------=0A=20= gcc/tree-ssa-uninit.c=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=2033=20++++++++--=0A=20gcc/tree-ssa.c=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=2027=20= +++++++-=0A=20gcc/tree.c=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=2075=20= +++++++++++++---------=0A=20gcc/tree.h=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=206=20= +-=0A=2014=20files=20changed,=20239=20insertions(+),=20130=20= deletions(-)=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-15.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-16.c=0A=0Adiff=20--git=20= a/gcc/c-family/c-attribs.c=20b/gcc/c-family/c-attribs.c=0Aindex=20= 7684b83ed67f..de53c3a2da88=20100644=0A---=20a/gcc/c-family/c-attribs.c=0A= +++=20b/gcc/c-family/c-attribs.c=0A@@=20-1526,16=20+1526,14=20@@=20= handle_unused_attribute=20(tree=20*node,=20tree=20name,=20tree=20= ARG_UNUSED=20(args),=0A=20=20=20return=20NULL_TREE;=0A=20}=0A=20=0A-/*=20= Handle=20a=20"uninitialized"=20attribute;=20arguments=20as=20in=0A+/*=20= Handle=20an=20"uninitialized"=20attribute;=20arguments=20as=20in=0A=20=20= =20=20struct=20attribute_spec.handler.=20=20*/=0A=20=0A=20static=20tree=0A= =20handle_uninitialized_attribute=20(tree=20*node,=20tree=20name,=20tree=20= ARG_UNUSED=20(args),=0A=20=09=09=09=09int=20ARG_UNUSED=20(flags),=20bool=20= *no_add_attrs)=0A=20{=0A-=20=20if=20(VAR_P=20(*node))=0A-=20=20=20=20= DECL_UNINITIALIZED=20(*node)=20=3D=201;=0A-=20=20else=0A+=20=20if=20= (!VAR_P=20(*node))=0A=20=20=20=20=20{=0A=20=20=20=20=20=20=20warning=20= (OPT_Wattributes,=20"%qE=20attribute=20ignored",=20name);=0A=20=20=20=20=20= =20=20*no_add_attrs=20=3D=20true;=0Adiff=20--git=20a/gcc/doc/invoke.texi=20= b/gcc/doc/invoke.texi=0Aindex=20508f27fd7a91..e68cbb13d9e8=20100644=0A= ---=20a/gcc/doc/invoke.texi=0A+++=20b/gcc/doc/invoke.texi=0A@@=20= -11553,7=20+11553,11=20@@=20and=20@option{-fauto-profile}.=0A=20@item=20= -ftrivial-auto-var-init=3D@var{choice}=0A=20@opindex=20= ftrivial-auto-var-init=0A=20Initialize=20automatic=20variables=20with=20= either=20a=20pattern=20or=20with=20zeroes=20to=20increase=0A-program=20= security=20by=20preventing=20uninitialized=20memory=20disclosure=20and=20= use.=0A+the=20security=20and=20predictability=20of=20a=20program=20by=20= preventing=20uninitialized=20memory=0A+disclosure=20and=20use.=0A+GCC=20= still=20considers=20an=20automatic=20variable=20that=20doesn't=20have=20= an=20explicit=0A+initializer=20as=20uninitialized,=20-Wuninitialized=20= will=20still=20report=20warning=20messages=0A+on=20such=20automatic=20= variables.=0A=20=0A=20The=20three=20values=20of=20@var{choice}=20are:=0A=20= =0Adiff=20--git=20a/gcc/gimplify.c=20b/gcc/gimplify.c=0Aindex=20= 3be830199f67..b14e79a84fd4=20100644=0A---=20a/gcc/gimplify.c=0A+++=20= b/gcc/gimplify.c=0A@@=20-1718,7=20+1718,7=20@@=20gimplify_vla_decl=20= (tree=20decl,=20gimple_seq=20*seq_p)=0A=20=20=20=20=20=20=20&&=20VAR_P=20= (decl)=0A=20=20=20=20=20=20=20&&=20!DECL_EXTERNAL=20(decl)=0A=20=20=20=20= =20=20=20&&=20!TREE_STATIC=20(decl)=0A-=20=20=20=20=20=20&&=20= !DECL_UNINITIALIZED=20(decl))=0A+=20=20=20=20=20=20&&=20= !lookup_attribute=20("uninitialized",=20DECL_ATTRIBUTES=20(decl)))=0A=20=20= =20=20=20switch=20(flag_trivial_auto_var_init)=0A=20=20=20=20=20=20=20{=0A= =20=20=20=20=20=20=20case=20AUTO_INIT_UNINITIALIZED:=0A@@=20-1743,7=20= +1743,7=20@@=20gimplify_vla_decl=20(tree=20decl,=20gimple_seq=20*seq_p)=0A= =20=09=20=20=20=20=20=20{=0A=20=09=09element_type=20=3D=20TREE_TYPE=20= (TREE_TYPE=20(decl));=0A=20=09=09size_of_element=20=3D=20DECL_SIZE_UNIT=20= (element_type);=0A-=09=09init_node=20=3D=20build_pattern_cst=20= (element_type);=0A+=09=09init_node=20=3D=20= build_pattern_cst_for_auto_init=20(element_type);=0A=20=09=09cur=20=3D=20= addr;=0A=20=09=09offset=20=3D=20DECL_SIZE_UNIT=20(decl)=20-=20= size_of_element;=0A=20=09=09end=20=3D=20addr=20+=20offset;=0A@@=20= -1769,6=20+1769,10=20@@=20gimplify_vla_decl=20(tree=20decl,=20gimple_seq=20= *seq_p)=0A=20=09=20=20tree=20label_loop=20=3D=20create_artificial_label=20= (UNKNOWN_LOCATION);=0A=20=0A=20=09=20=20element_type=20=3D=20TREE_TYPE=20= (TREE_TYPE=20(decl));=0A+=09=20=20/*=20If=20this=20is=20a=20nested=20= array,=20we=20should=20go=20down=20to=20the=20element=20that=0A+=09=20=20= =20=20=20is=20not=20an=20array.=20=20*/=0A+=09=20=20while=20(TREE_CODE=20= (element_type)=20=3D=3D=20ARRAY_TYPE)=0A+=09=20=20=20=20element_type=20=3D= =20TREE_TYPE=20(element_type);=0A=20=0A=20=09=20=20gcond=20*cond_stmt=20= =3D=20gimple_build_cond=20(GT_EXPR,=20DECL_SIZE_UNIT=20(decl),=0A=20=09=09= =09=09=09=09build_zero_cst=20(sizetype),=0A@@=20-1787,7=20+1791,9=20@@=20= gimplify_vla_decl=20(tree=20decl,=20gimple_seq=20*seq_p)=0A=20=0A=20=09=20= =20gimplify_assign=20(size_of_element,=20TYPE_SIZE_UNIT=20= (element_type),=0A=20=09=09=09=20=20=20seq_p);=0A-=09=20=20= gimplify_assign=20(init_node,=20build_pattern_cst=20(element_type),=20= seq_p);=0A+=09=20=20gimplify_assign=20(init_node,=0A+=09=09=09=20=20=20= build_pattern_cst_for_auto_init=20(element_type),=0A+=09=09=09=20=20=20= seq_p);=0A=20=0A=20=09=20=20cur=20=3D=20create_tmp_var=20(ptr_type,=20= ".cur_addr");=0A=20=09=20=20end=20=3D=20create_tmp_var=20(ptr_type,=20= ".end_addr");=0A@@=20-1849,10=20+1855,7=20@@=20force_labels_r=20(tree=20= *tp,=20int=20*walk_subtrees,=20void=20*data=20ATTRIBUTE_UNUSED)=0A=20=20=20= =201st=20argument:=20DECL;=0A=20=20=20=202nd=20argument:=20INIT_TYPE;=0A=20= =0A-=20=20=20as=20DEFERRED_INIT=20(DECL,=20INIT_TYPE)=0A-=0A-=20=20=20= DEFERRED_INIT=20is=20defined=20as:=0A-=20=20=20= DEF_INTERNAL_FN(DEFERRED_INIT,=20ECF_CONST=20|=20ECF_LEAF=20|=20= ECF_NOTHROW,=20NULL).=20=20*/=0A+=20=20=20as=20DEFERRED_INIT=20(DECL,=20= INIT_TYPE).=20=20*/=0A=20=0A=20static=20gimple=20*=0A=20= build_deferred_init=20(tree=20decl,=0A@@=20-1882,7=20+1885,7=20@@=20= gimple_add_init_for_auto_var=20(tree=20decl,=0A=20=20=20=20=20if=20= (init_approach=20=3D=3D=20AUTO_INIT_A)=0A=20=20=20=20=20{=0A=20=20=20=20=20= =20=20tree=20init=20=3D=20(init_type=20=3D=3D=20AUTO_INIT_PATTERN)=0A-=09= =09=20=20=20?=20build_pattern_cst=20(TREE_TYPE=20(decl))=20:=0A+=09=09=20= =20=20?=20build_pattern_cst_for_auto_init=20(TREE_TYPE=20(decl))=20:=0A=20= =09=09=20=20=20build_zero_cst=20(TREE_TYPE=20(decl));=0A=20=20=20=20=20=20= =20init=20=3D=20build2=20(INIT_EXPR,=20void_type_node,=20decl,=20init);=0A= =20=20=20=20=20=20=20gimplify_and_add=20(init,=20seq_p);=0A@@=20-1992,9=20= +1995,10=20@@=20gimplify_decl_expr=20(tree=20*stmt_p,=20gimple_seq=20= *seq_p)=0A=20=09}=0A=20=20=20=20=20=20=20/*=20When=20there=20is=20no=20= explicit=20initializer,=20if=20the=20user=20requested,=0A=20=09=20We=20= should=20insert=20an=20artifical=20initializer=20for=20this=20automatic=0A= -=09=20variable=20for=20non=20vla=20variables.=20=20*/=0A+=09=20variable=20= for=20non=20VLA=20variables.=20=20VLA=20variables=20are=20handled=0A+=09=20= in=20gimplify_vla_decl=20differently.=20=20*/=0A=20=20=20=20=20=20=20= else=20if=20(flag_trivial_auto_var_init=20>=20AUTO_INIT_UNINITIALIZED=0A= -=09=20=20=20=20=20=20=20&&=20!DECL_UNINITIALIZED=20(decl)=0A+=09=20=20=20= =20=20=20=20&&=20!lookup_attribute=20("uninitialized",=20DECL_ATTRIBUTES=20= (decl))=0A=20=09=20=20=20=20=20=20=20&&=20!TREE_STATIC=20(decl)=0A=20=09=20= =20=20=20=20=20=20&&=20!is_vla)=0A=20=09gimple_add_init_for_auto_var=20= (decl,=0Adiff=20--git=20a/gcc/internal-fn.c=20b/gcc/internal-fn.c=0A= index=2035de829dcf83..28d23e923b3c=20100644=0A---=20a/gcc/internal-fn.c=0A= +++=20b/gcc/internal-fn.c=0A@@=20-2985,7=20+2985,7=20@@=20= expand_DEFERRED_INIT=20(internal_fn,=20gcall=20*stmt)=0A=20=20=20=20=20= default:=0A=20=20=20=20=20=20=20gcc_unreachable=20();=0A=20=20=20=20=20= case=20AUTO_INIT_PATTERN:=0A-=20=20=20=20=20=20init=20=3D=20= build_pattern_cst=20(TREE_TYPE=20(var));=0A+=20=20=20=20=20=20init=20=3D=20= build_pattern_cst_for_auto_init=20(TREE_TYPE=20(var));=0A=20=20=20=20=20=20= =20expand_assignment=20(var,=20init,=20false);=0A=20=20=20=20=20=20=20= break;=0A=20=20=20=20=20case=20AUTO_INIT_ZERO:=0Adiff=20--git=20= a/gcc/testsuite/c-c++-common/auto-init-15.c=20= b/gcc/testsuite/c-c++-common/auto-init-15.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..6f12f96ac1e2=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-15.c=0A@@=20-0,0=20+1,13=20@@=0A= +/*=20Verify=20the=20auto=20initialization=20of=20nested=20VLA.=20=20*/=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero=20-fdump-tree-gimple"=20}=20*/=0A+=0A= +void=20g(void=20*);=0A+=0A+void=20foo(int=20a)=0A+{=0A+=20=20int=20= x[a][a];=0A+=20=20g(x);=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"__builtin_memset"=20"gimple"=20}=20}=20*/=0Adiff=20= --git=20a/gcc/testsuite/c-c++-common/auto-init-16.c=20= b/gcc/testsuite/c-c++-common/auto-init-16.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..c6a3627da542=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-16.c=0A@@=20-0,0=20+1,13=20@@=0A= +/*=20Verify=20the=20auto=20initialization=20of=20nested=20VLA.=20=20*/=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern=20-fdump-tree-gimple"=20}=20*/=0A+=0A= +void=20g(void=20*);=0A+=0A+void=20foo(int=20a)=0A+{=0A+=20=20int=20= x[a][a];=0A+=20=20g(x);=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"__builtin_memcpy"=20"gimple"=20}=20}=20*/=0Adiff=20= --git=20a/gcc/tree-cfg.c=20b/gcc/tree-cfg.c=0Aindex=20= 3717c6d26a54..8ffcc6675893=20100644=0A---=20a/gcc/tree-cfg.c=0A+++=20= b/gcc/tree-cfg.c=0A@@=20-3433,27=20+3433,56=20@@=20verify_gimple_call=20= (gcall=20*stmt)=0A=20=09}=0A=20=20=20=20=20}=0A=20=0A+=20=20/*=20For=20a=20= call=20to=20.DEFERRED_INIT,=20we=20should=20guarantee=20that=20the=20lhs=20= is=0A+=20=20=20=20=20the=20same=20as=20the=20first=20argument=20of=20the=20= call.=20=20*/=0A=20=20=20if=20(gimple_call_internal_p=20(stmt,=20= IFN_DEFERRED_INIT))=0A-=20=20=20=20return=20false;=0A+=20=20=20=20{=0A+=20= =20=20=20=20=20tree=20arg0=20=3D=20gimple_call_arg=20(stmt,=200);=0A+=20=20= =20=20=20=20if=20(TREE_CODE=20(lhs)=20=3D=3D=20SSA_NAME)=0A+=09lhs=20=3D=20= SSA_NAME_VAR=20(lhs);=0A+=20=20=20=20=20=20if=20(TREE_CODE=20(arg0)=20=3D=3D= =20SSA_NAME)=0A+=09arg0=20=3D=20SSA_NAME_VAR=20(arg0);=0A+=20=20=20=20=20= =20if=20(lhs=20!=3D=20arg0)=0A+=09{=0A+=09=20=20error=20= ("%=20calls=20should=20have=20the=20same=20LHS=20as=20= the=20"=0A+=09=09=20"first=20argument");=0A+=09=20=20return=20true;=0A+=09= }=0A+=20=20=20=20}=0A=20=0A+=20=20/*=20We=20will=20not=20verify=20the=20= arguments=20for=20the=20calls=20to=20.DEFERRED_INIT.=0A+=20=20=20=20=20= Such=20call=20is=20not=20a=20real=20call,=20just=20a=20placeholder=20for=20= a=20later=0A+=20=20=20=20=20initialization=20during=20expand=20phase.=0A= +=20=20=20=20=20This=20is=20mainly=20to=20avoid=20assertion=20failure=20= for=20the=20following=0A+=20=20=20=20=20case:=0A+=0A+=20=20=20=20=20= uni_var=20=3D=20.DEFERRED_INIT=20(uni_var,=20INIT_TYPE);=0A+=20=20=20=20=20= foo=20(&uni_var);=0A+=0A+=20=20=20=20=20in=20the=20above,=20the=20= uninitialized=20auto=20variable=20"uni_var"=20is=0A+=20=20=20=20=20= addressable,=20therefore=20should=20not=20be=20in=20registers,=20= resulting=0A+=20=20=20=20=20the=20assertion=20failure=20in=20the=20= following=20argument=20verification.=20=20*/=0A+=20=20if=20= (gimple_call_internal_p=20(stmt,=20IFN_DEFERRED_INIT))=0A+=20=20=20=20= return=20false;=0A=20=20=20/*=20???=20=20The=20C=20frontend=20passes=20= unpromoted=20arguments=20in=20case=20it=0A=20=20=20=20=20=20didn't=20see=20= a=20function=20declaration=20before=20the=20call.=20=20So=20for=20now=0A=20= =20=20=20=20=20leave=20the=20call=20arguments=20mostly=20unverified.=20=20= Once=20we=20gimplify=0A=20=20=20=20=20=20unit-at-a-time=20we=20have=20a=20= chance=20to=20fix=20this.=20=20*/=0A=20=0A-=20=20for=20(i=20=3D=200;=20i=20= <=20gimple_call_num_args=20(stmt);=20++i)=0A-=20=20=20=20{=0A-=20=20=20=20= =20=20tree=20arg=20=3D=20gimple_call_arg=20(stmt,=20i);=0A-=20=20=20=20=20= =20if=20((is_gimple_reg_type=20(TREE_TYPE=20(arg))=0A-=09=20=20=20&&=20= !is_gimple_val=20(arg))=0A-=09=20=20||=20(!is_gimple_reg_type=20= (TREE_TYPE=20(arg))=0A-=09=20=20=20=20=20=20&&=20!is_gimple_lvalue=20= (arg)))=0A-=09{=0A-=09=20=20error=20("invalid=20argument=20to=20gimple=20= call");=0A-=09=20=20debug_generic_expr=20(arg);=0A-=09=20=20return=20= true;=0A-=09}=0A-=20=20=20=20}=0A+=20=20else=0A+=20=20=20=20for=20(i=20=3D= =200;=20i=20<=20gimple_call_num_args=20(stmt);=20++i)=0A+=20=20=20=20=20=20= {=0A+=09tree=20arg=20=3D=20gimple_call_arg=20(stmt,=20i);=0A+=09if=20= ((is_gimple_reg_type=20(TREE_TYPE=20(arg))=0A+=09=20=20=20=20=20&&=20= !is_gimple_val=20(arg))=0A+=09=20=20=20=20||=20(!is_gimple_reg_type=20= (TREE_TYPE=20(arg))=0A+=09=09&&=20!is_gimple_lvalue=20(arg)))=0A+=09=20=20= {=0A+=09=20=20=20=20error=20("invalid=20argument=20to=20gimple=20call");=0A= +=09=20=20=20=20debug_generic_expr=20(arg);=0A+=09=20=20=20=20return=20= true;=0A+=09=20=20}=0A+=20=20=20=20=20=20}=0A=20=0A=20=20=20return=20= false;=0A=20}=0Adiff=20--git=20a/gcc/tree-core.h=20b/gcc/tree-core.h=0A= index=2002f580e5f04c..2e0e76ea8838=20100644=0A---=20a/gcc/tree-core.h=0A= +++=20b/gcc/tree-core.h=0A@@=20-1808,7=20+1808,6=20@@=20struct=20GTY(())=20= tree_decl_with_vis=20{=0A=20=20unsigned=20in_text_section=20:=201;=0A=20=20= unsigned=20in_constant_pool=20:=201;=0A=20=20unsigned=20dllimport_flag=20= :=201;=0A-=20unsigned=20uninitialized=20:=201;=0A=20=20/*=20Don't=20= belong=20to=20VAR_DECL=20exclusively.=20=20*/=0A=20=20unsigned=20= weak_flag=20:=201;=0A=20=0A@@=20-1830,7=20+1829,7=20@@=20struct=20= GTY(())=20tree_decl_with_vis=20{=0A=20=20unsigned=20final=20:=201;=0A=20=20= /*=20Belong=20to=20FUNCTION_DECL=20exclusively.=20=20*/=0A=20=20unsigned=20= regdecl_flag=20:=201;=0A-=20/*=2013=20unused=20bits.=20=20*/=0A+=20/*=20= 14=20unused=20bits.=20=20*/=0A=20=20/*=2032=20more=20unused=20on=2064=20= bit=20HW.=20*/=0A=20};=0A=20=0Adiff=20--git=20a/gcc/tree-sra.c=20= b/gcc/tree-sra.c=0Aindex=20302a123bf549..4c74df272141=20100644=0A---=20= a/gcc/tree-sra.c=0A+++=20b/gcc/tree-sra.c=0A@@=20-4079,15=20+4079,12=20= @@=20get_repl_default_def_ssa_name=20(struct=20access=20*racc,=20tree=20= reg_type)=0A=20=0A=20=0A=20/*=20Generate=20statements=20to=20call=20= .DEFERRED_INIT=20to=20initialize=20scalar=20replacements=0A-=20=20=20of=20= accesses=20within=20a=20subtree=20ACCESS,=20all=20its=20children,=20= siblings=20and=20their=0A-=20=20=20children=20are=20to=20be=20processed.=20= =20TOP_OFFSET=20is=20the=20offset=20=20of=20the=20processed=0A-=20=20=20= subtree=20which=20has=20to=20be=20subtracted=20from=20offsets=20of=20= individual=20accesses=20to=0A-=20=20=20get=20corresponding=20offsets=20= for=20AGG.=20=20GSI=20is=20a=20statement=20iterator=20used=20to=20place=0A= -=20=20=20the=20new=20statements.=20=20*/=0A+=20=20=20of=20accesses=20= within=20a=20subtree=20ACCESS;=20all=20its=20children,=20siblings=20and=20= their=0A+=20=20=20children=20are=20to=20be=20processed.=0A+=20=20=20GSI=20= is=20a=20statement=20iterator=20used=20to=20place=20the=20new=20= statements.=20=20*/=0A=20static=20void=0A-generate_subtree_deferred_init=20= (struct=20access=20*access,=20tree=20agg,=0A= +generate_subtree_deferred_init=20(struct=20access=20*access,=0A=20=09=09= =09=09enum=20auto_init_type=20init_type,=0A-=09=09=09=09HOST_WIDE_INT=20= top_offset,=0A=20=09=09=09=09gimple_stmt_iterator=20*gsi,=0A=20=09=09=09=09= location_t=20loc)=0A=20{=0A@@=20-4109,17=20+4106,19=20@@=20= generate_subtree_deferred_init=20(struct=20access=20*access,=20tree=20= agg,=0A=20=09}=0A=20=20=20=20=20=20=20else=20if=20= (access->grp_to_be_debug_replaced)=0A=20=09{=0A-=09=20=20/*=20FIXME,=20= this=20part=20might=20have=20some=20issue.=20=20*/=0A-=09=20=20tree=20= drhs=20=3D=20build_debug_ref_for_model=20(loc,=20agg,=0A-=09=09=09=09=09=09= =20access->offset=20-=20top_offset,=0A-=09=09=09=09=09=09=20access);=0A-=09= =20=20gdebug=20*ds=20=3D=20gimple_build_debug_bind=20= (get_access_replacement=20(access),=0A-=09=09=09=09=09=09drhs,=20= gsi_stmt=20(*gsi));=0A+=09=20=20tree=20drepl=20=3D=20= get_access_replacement=20(access);=0A+=09=20=20tree=20init_type_node=0A+=09= =20=20=20=20=3D=20build_int_cst=20(integer_type_node,=20(int)=20= init_type);=0A+=09=20=20tree=20call=20=3D=20build_call_expr_internal_loc=0A= +=09=09=20=20=20=20=20(UNKNOWN_LOCATION,=20IFN_DEFERRED_INIT,=0A+=09=09=20= =20=20=20=20=20TREE_TYPE=20(drepl),=202,=20drepl,=20init_type_node);=0A+=09= =20=20gdebug=20*ds=20=3D=20gimple_build_debug_bind=20(drepl,=20call,=0A+=09= =09=09=09=09=09gsi_stmt=20(*gsi));=0A=20=09=20=20gsi_insert_before=20= (gsi,=20ds,=20GSI_SAME_STMT);=0A=20=09}=0A=20=20=20=20=20=20=20if=20= (access->first_child)=0A-=09generate_subtree_deferred_init=20= (access->first_child,=20agg,=20init_type,=0A-=09=09=09=09=09top_offset,=20= gsi,=20loc);=0A+=09generate_subtree_deferred_init=20= (access->first_child,=20init_type,=0A+=09=09=09=09=09gsi,=20loc);=0A=20=0A= =20=20=20=20=20=20=20access=20=3D=20access=20->next_sibling;=0A=20=20=20=20= =20}=0A@@=20-4132,40=20+4131,55=20@@=20generate_subtree_deferred_init=20= (struct=20access=20*access,=20tree=20agg,=0A=20=20=20=20there=20is=20= one,=20also=20replace=20the=20RHS=20call=20to=20a=20call=20to=20= .DEFERRED_INIT=20of=0A=20=20=20=20the=20corresponding=20scalar=20= relacement=20variable.=20=20Examine=20the=20subtree=20and=0A=20=20=20=20= do=20the=20scalar=20replacements=20in=20the=20subtree=20too.=20=20STMT=20= is=20the=20call,=20GSI=20is=0A-=20=20=20the=20statment=20iterator=20to=20= place=20newly=20created=20statements.=20=20*/=0A+=20=20=20the=20statment=20= iterator=20to=20place=20newly=20created=20statement.=20=20*/=0A=20=0A=20= static=20enum=20assignment_mod_result=0A=20sra_modify_deferred_init=20= (gimple=20*stmt,=20gimple_stmt_iterator=20*gsi)=0A=20{=0A=20=20=20tree=20= lhs=20=3D=20gimple_call_lhs=20(stmt);=0A+=20=20tree=20arg0=20=3D=20= gimple_call_arg=20(stmt,=200);=0A=20=20=20enum=20auto_init_type=20= init_type=0A=20=20=20=20=20=3D=20(enum=20auto_init_type)=20= TREE_INT_CST_LOW=20(gimple_call_arg=20(stmt,=201));=0A-=20=20struct=20= access=20*access=20=3D=20get_access_for_expr=20(lhs);=0A-=20=20if=20= (!access)=0A+=20=20struct=20access=20*lhs_access=20=3D=20= get_access_for_expr=20(lhs);=0A+=20=20struct=20access=20*arg0_access=20=3D= =20get_access_for_expr=20(arg0);=0A+=20=20if=20(!lhs_access=20&&=20= !arg0_access)=0A=20=20=20=20=20return=20SRA_AM_NONE;=0A+=20=20gcc_assert=20= (lhs_access=20&&=20arg0_access);=0A+=0A=20=20=20location_t=20loc=20=3D=20= gimple_location=20(stmt);=0A=20=0A-=20=20if=20= (access->grp_to_be_replaced)=0A+=20=20if=20= (lhs_access->grp_to_be_replaced)=0A=20=20=20=20=20{=0A-=20=20=20=20=20=20= tree=20repl=20=3D=20get_access_replacement=20(access);=0A-=20=20=20=20=20= =20gimple_call_set_lhs=20(stmt,=20repl);=0A-=20=20=20=20=20=20= gimple_call_set_arg=20(stmt,=200,=20repl);=0A+=20=20=20=20=20=20tree=20= lhs_repl=20=3D=20get_access_replacement=20(lhs_access);=0A+=20=20=20=20=20= =20tree=20arg0_repl=20=3D=20get_access_replacement=20(arg0_access);=0A+=20= =20=20=20=20=20if=20(TREE_CODE=20(lhs_repl)=20=3D=3D=20SSA_NAME)=0A+=09{=0A= +=09=20=20gcc_assert=20(TREE_CODE=20(arg0_repl)=20=3D=3D=20SSA_NAME);=0A= +=09=20=20gcc_assert=20(SSA_NAME_VAR=20(lhs_repl)=20=3D=3D=20= SSA_NAME_VAR=20(arg0_repl));=0A+=09}=0A+=20=20=20=20=20=20else=0A+=09= gcc_assert=20(lhs_repl=20=3D=3D=20arg0_repl);=0A+=20=20=20=20=20=20= gimple_call_set_lhs=20(stmt,=20lhs_repl);=0A+=20=20=20=20=20=20= gimple_call_set_arg=20(stmt,=200,=20arg0_repl);=0A=20=20=20=20=20=20=20= sra_stats.deferred_init++;=0A=20=20=20=20=20}=0A-=20=20else=20if=20= (access->grp_to_be_debug_replaced)=0A+=20=20else=20if=20= (lhs_access->grp_to_be_debug_replaced)=0A=20=20=20=20=20{=0A-=20=20=20=20= =20=20/*=20FIXME,=20this=20part=20might=20have=20some=20issues.=20=20*/=0A= -=20=20=20=20=20=20tree=20drepl=20=3D=20get_access_replacement=20= (access);=0A-=20=20=20=20=20=20gdebug=20*ds=20=3D=20= gimple_build_debug_bind=20(drepl,=20NULL_TREE,=0A+=20=20=20=20=20=20tree=20= lhs_drepl=20=3D=20get_access_replacement=20(lhs_access);=0A+=20=20=20=20=20= =20tree=20init_type_node=0A+=09=20=20=20=3D=20build_int_cst=20= (integer_type_node,=20(int)=20init_type);=0A+=20=20=20=20=20=20tree=20= call=20=3D=20build_call_expr_internal_loc=0A+=09=09=20=20= (UNKNOWN_LOCATION,=20IFN_DEFERRED_INIT,=0A+=09=09=20=20TREE_TYPE=20= (lhs_drepl),=202,=20lhs_drepl,=20init_type_node);=0A+=20=20=20=20=20=20= gdebug=20*ds=20=3D=20gimple_build_debug_bind=20(lhs_drepl,=20call,=0A=20=09= =09=09=09=09=20=20=20=20gsi_stmt=20(*gsi));=0A=20=20=20=20=20=20=20= gsi_insert_before=20(gsi,=20ds,=20GSI_SAME_STMT);=0A=20=20=20=20=20}=0A=20= =0A-=20=20if=20(access->first_child)=0A-=20=20=20=20= generate_subtree_deferred_init=20(access->first_child,=20lhs,=0A-=09=09=09= =09=20=20=20=20init_type,=20access->offset,=0A-=09=09=09=09=20=20=20=20= gsi,=20loc);=0A-=20=20if=20(access->grp_covered)=0A+=20=20if=20= (lhs_access->first_child)=0A+=20=20=20=20generate_subtree_deferred_init=20= (lhs_access->first_child,=0A+=09=09=09=09=20=20=20=20init_type,=20gsi,=20= loc);=0A+=20=20if=20(lhs_access->grp_covered)=0A=20=20=20=20=20{=0A=20=20= =20=20=20=20=20unlink_stmt_vdef=20(stmt);=0A=20=20=20=20=20=20=20= gsi_remove=20(gsi,=20true);=0Adiff=20--git=20= a/gcc/tree-ssa-structalias.c=20b/gcc/tree-ssa-structalias.c=0Aindex=20= e4ee3ff93f09..547df1c7b41d=20100644=0A---=20a/gcc/tree-ssa-structalias.c=0A= +++=20b/gcc/tree-ssa-structalias.c=0A@@=20-4851,29=20+4851,6=20@@=20= find_func_aliases_for_builtin_call=20(struct=20function=20*fn,=20gcall=20= *t)=0A=20=20=20return=20false;=0A=20}=0A=20=0A-static=20void=0A= -find_func_aliases_for_deferred_init=20(gcall=20*t)=0A-{=0A-=20=20tree=20= lhsop=20=3D=20gimple_call_lhs=20(t);=0A-=20=20enum=20auto_init_type=20= init_type=0A-=20=20=20=20=3D=20(enum=20auto_init_type)=20= TREE_INT_CST_LOW=20(gimple_call_arg=20(t,=201));=0A-=20=20auto_vec=20lhsc;=0A-=20=20auto_vec=20rhsc;=0A-=20=20struct=20= constraint_expr=20temp;=0A-=0A-=20=20get_constraint_for=20(lhsop,=20= &lhsc);=0A-=20=20if=20(init_type=20=3D=3D=20AUTO_INIT_ZERO=20&&=20= flag_delete_null_pointer_checks)=0A-=20=20=20=20temp.var=20=3D=20= nothing_id;=0A-=20=20else=0A-=20=20=20=20temp.var=20=3D=20nonlocal_id;=0A= -=20=20temp.type=20=3D=20ADDRESSOF;=0A-=20=20temp.offset=20=3D=200;=0A-=20= =20rhsc.safe_push=20(temp);=0A-=0A-=20=20process_all_all_constraints=20= (lhsc,=20rhsc);=0A-=20=20return;=0A-}=0A-=0A=20/*=20Create=20constraints=20= for=20the=20call=20T.=20=20*/=0A=20=0A=20static=20void=0A@@=20-4888,10=20= +4865,7=20@@=20find_func_aliases_for_call=20(struct=20function=20*fn,=20= gcall=20*t)=0A=20=20=20=20=20return;=0A=20=0A=20=20=20if=20= (gimple_call_internal_p=20(t,=20IFN_DEFERRED_INIT))=0A-=20=20=20=20{=0A-=20= =20=20=20=20=20find_func_aliases_for_deferred_init=20(t);=0A-=20=20=20=20= =20=20return;=0A-=20=20=20=20}=0A+=20=20=20=20return;=0A=20=0A=20=20=20= fi=20=3D=20get_fi_for_callee=20(t);=0A=20=20=20if=20(!in_ipa_mode=0Adiff=20= --git=20a/gcc/tree-ssa-uninit.c=20b/gcc/tree-ssa-uninit.c=0Aindex=20= e8ca1469a083..c86c59cbabd4=20100644=0A---=20a/gcc/tree-ssa-uninit.c=0A= +++=20b/gcc/tree-ssa-uninit.c=0A@@=20-136,8=20+136,30=20@@=20warn_uninit=20= (enum=20opt_code=20wc,=20tree=20t,=20tree=20expr,=20tree=20var,=0A=20=20=20= =20=20=20=20&&=20gimple_assign_rhs_code=20(context)=20=3D=3D=20= COMPLEX_EXPR)=0A=20=20=20=20=20return;=0A=20=0A-=20=20/*=20Ignore=20= REALPART_EXPR=20or=20IMAGPART_EXPR=20if=20its=20operand=20is=0A-=20=20=20= =20=20a=20call=20to=20.DEFERRED_INIT.=20=20*/=0A+=20=20/*=20Ignore=20= REALPART_EXPR=20or=20IMAGPART_EXPR=20if=20its=20operand=20is=20a=20call=20= to=0A+=20=20=20=20=20.DEFERRED_INIT.=20=20This=20is=20for=20handling=20= the=20following=20case=20correctly:=0A+=0A+=20=201=20typedef=20_Complex=20= float=20C;=0A+=20=202=20C=20foo(int=20cond)=0A+=20=203=20{=0A+=20=204=20=20= =20C=20f;=0A+=20=205=20=20=20__imag__=20f=20=3D=200;=0A+=20=206=20=20=20= if=20(cond)=0A+=20=207=20=20=20=20=20{=0A+=20=208=20=20=20=20=20=20=20= __real__=20f=20=3D=201;=0A+=20=209=20=20=20=20=20=20=20return=20f;=0A+=20= 10=20=20=20=20=20}=0A+=2011=20=20=20return=20f;=0A+=2012=20}=0A+=0A+=20=20= =20=20with=20-ftrivial-auto-var-init,=20compiler=20will=20insert=20the=20= following=0A+=20=20=20=20artificial=20initialization=20at=20line=204:=0A= +=20=20f=20=3D=20.DEFERRED_INIT=20(f,=202);=0A+=20=20_1=20=3D=20= REALPART_EXPR=20;=0A+=0A+=20=20=20=20without=20the=20following=20= special=20handling,=20_1=20=3D=20REALPART_EXPR=20=20will=0A+=20=20=20=20= be=20treated=20as=20the=20uninitialized=20use=20point,=20which=20is=20= incorrect.=20(the=0A+=20=20=20=20real=20uninitialized=20use=20point=20is=20= at=20line=2011).=20=20*/=0A=20=20=20if=20(is_gimple_assign=20(context)=0A= =20=20=20=20=20=20=20&&=20(gimple_assign_rhs_code=20(context)=20=3D=3D=20= REALPART_EXPR=0A=20=09=20=20||=20gimple_assign_rhs_code=20(context)=20=3D=3D= =20IMAGPART_EXPR))=0A@@=20-224,12=20+246,12=20@@=20check_defs=20(ao_ref=20= *ref,=20tree=20vdef,=20void=20*data_)=0A=20=20=20check_defs_data=20*data=20= =3D=20(check_defs_data=20*)data_;=0A=20=20=20gimple=20*def_stmt=20=3D=20= SSA_NAME_DEF_STMT=20(vdef);=0A=20=0A-=20=20/*=20Ignore=20the=20vdef=20= iff=20the=20definition=20statement=20is=20a=20call=0A+=20=20/*=20Ignore=20= the=20vdef=20if=20the=20definition=20statement=20is=20a=20call=0A=20=20=20= =20=20=20to=20.DEFERRED_INIT=20function.=20=20*/=0A=20=20=20if=20= (gimple_call_internal_p=20(def_stmt,=20IFN_DEFERRED_INIT))=0A=20=20=20=20= =20return=20false;=0A=20=0A-=20=20/*=20Ignore=20the=20vdef=20iff=20the=20= definition=20statement=20is=20a=20call=0A+=20=20/*=20Ignore=20the=20vdef=20= if=20the=20definition=20statement=20is=20a=20call=0A=20=20=20=20=20=20to=20= builtin_memset=20function=20that=20is=20added=20for=20uninitialized=0A=20= =20=20=20=20=20auto=20variable=20initialization.=20=20*/=0A=20=20=20if=20= (gimple_call_builtin_p=20(def_stmt,=20BUILT_IN_MEMSET)=0A@@=20-638,6=20= +660,9=20@@=20warn_uninitialized_vars=20(bool=20wmaybe_uninit)=0A=20=09=20= =20ssa_op_iter=20op_iter;=0A=20=09=20=20tree=20use;=0A=20=0A+=09=20=20/*=20= The=20call=20is=20an=20artificial=20use,=20will=20not=20provide=20= meaningful=0A+=09=20=20=20=20=20error=20message.=20=20If=20the=20result=20= of=20the=20call=20is=20used=20somewhere=0A+=09=20=20=20=20=20else,=20we=20= warn=20there=20instead.=20=20*/=0A=20=09=20=20if=20= (gimple_call_internal_p=20(stmt,=20IFN_DEFERRED_INIT))=0A=20=09=20=20=20=20= continue;=0A=20=0Adiff=20--git=20a/gcc/tree-ssa.c=20b/gcc/tree-ssa.c=0A= index=202058849a3a4c..0c285f7b4f0f=20100644=0A---=20a/gcc/tree-ssa.c=0A= +++=20b/gcc/tree-ssa.c=0A@@=20-1325,11=20+1325,35=20@@=20= ssa_undefined_value_p=20(tree=20t,=20bool=20partial)=0A=20=20=20if=20= (gimple_nop_p=20(def_stmt))=0A=20=20=20=20=20return=20true;=0A=20=0A-=20=20= /*=20The=20value=20is=20undefined=20iff=20the=20definition=20statement=20= is=20a=20call=0A+=20=20/*=20The=20value=20is=20undefined=20if=20the=20= definition=20statement=20is=20a=20call=0A=20=20=20=20=20=20to=20= .DEFERRED_INIT=20function.=20=20*/=0A=20=20=20if=20= (gimple_call_internal_p=20(def_stmt,=20IFN_DEFERRED_INIT))=0A=20=20=20=20= =20return=20true;=0A=20=0A+=20=20/*=20The=20value=20is=20partially=20= undefined=20if=20the=20definition=20statement=20is=0A+=20=20=20=20=20a=20= REALPART_EXPR=20or=20IMAGPART_EXPR=20and=20its=20operand=20is=20defined=20= by=0A+=20=20=20=20=20the=20call=20to=20.DEFERRED_INIT=20function.=20=20= This=20is=20for=20handling=20the=0A+=20=20=20=20=20following=20case:=0A+=0A= +=20=201=20typedef=20_Complex=20float=20C;=0A+=20=202=20C=20foo(int=20= cond)=0A+=20=203=20{=0A+=20=204=20=20=20C=20f;=0A+=20=205=20=20=20= __imag__=20f=20=3D=200;=0A+=20=206=20=20=20if=20(cond)=0A+=20=207=20=20=20= =20=20{=0A+=20=208=20=20=20=20=20=20=20__real__=20f=20=3D=201;=0A+=20=20= 9=20=20=20=20=20=20=20return=20f;=0A+=2010=20=20=20=20=20}=0A+=2011=20=20= =20return=20f;=0A+=2012=20}=0A+=0A+=20=20=20=20with=20= -ftrivial-auto-var-init,=20compiler=20will=20insert=20the=20following=0A= +=20=20=20=20artificial=20initialization:=0A+=20=20f=20=3D=20= .DEFERRED_INIT=20(f,=202);=0A+=20=20_1=20=3D=20REALPART_EXPR=20;=0A+=0A= +=20=20=20=20we=20should=20treat=20the=20definition=20_1=20=3D=20= REALPART_EXPR=20=20as=20undefined.=20=20*/=0A=20=20=20if=20(partial=20= &&=20is_gimple_assign=20(def_stmt)=0A=20=20=20=20=20=20=20&&=20= (gimple_assign_rhs_code=20(def_stmt)=20=3D=3D=20REALPART_EXPR=0A=20=09=20= =20||=20gimple_assign_rhs_code=20(def_stmt)=20=3D=3D=20IMAGPART_EXPR))=0A= @@=20-1341,7=20+1365,6=20@@=20ssa_undefined_value_p=20(tree=20t,=20bool=20= partial)=0A=20=09return=20true;=0A=20=20=20=20=20}=0A=20=0A-=0A=20=20=20= /*=20Check=20if=20the=20complex=20was=20not=20only=20partially=20= defined.=20=20*/=0A=20=20=20if=20(partial=20&&=20is_gimple_assign=20= (def_stmt)=0A=20=20=20=20=20=20=20&&=20gimple_assign_rhs_code=20= (def_stmt)=20=3D=3D=20COMPLEX_EXPR)=0Adiff=20--git=20a/gcc/tree.c=20= b/gcc/tree.c=0Aindex=20a199fa773fb7..c320781befec=20100644=0A---=20= a/gcc/tree.c=0A+++=20b/gcc/tree.c=0A@@=20-2533,7=20+2533,7=20@@=20= build_zero_cst=20(tree=20type)=0A=20=20=20=20auto=20variables.=20=20*/=0A= =20=0A=20tree=0A-build_pattern_cst=20(tree=20type)=0A= +build_pattern_cst_for_auto_init=20(tree=20type)=0A=20{=0A=20=20=20/*=20= The=20following=20value=20is=20a=20guaranteed=20unmappable=20pointer=20= value=20and=20has=20a=0A=20=20=20=20=20=20repeated=20byte-pattern=20= which=20makes=20it=20easier=20to=20synthesize.=20=20We=20use=20it=20for=0A= @@=20-2548,13=20+2548,20=20@@=20build_pattern_cst=20(tree=20type)=0A=20=0A= =20=20=20switch=20(TREE_CODE=20(type))=0A=20=20=20=20=20{=0A-=20=20=20=20= case=20INTEGER_TYPE:=0A-=20=20=20=20case=20ENUMERAL_TYPE:=0A=20=20=20=20=20= case=20BOOLEAN_TYPE:=0A-=20=20=20=20=20=20/*=20This=20will=20initialize=20= a=20boolean=20type=20variable=20to=200=20instead=20of=201.=0A-=20=09=20= We=20think=20that=20initializint=20a=20boolean=20variable=20to=200=20= other=20than=201=0A+=20=20=20=20=20=20/*=20We=20think=20that=20= initializing=20the=20boolean=20variable=20to=200=20other=20than=201=0A=20= =09=20is=20better=20even=20for=20pattern=20initialization.=20=20*/=0A-=20= =20=20=20=20=20return=20build_int_cstu=20(type,=20largevalue);=0A+=20=20=20= =20=20=20return=20build_zero_cst=20(type);=0A+=20=20=20=20case=20= INTEGER_TYPE:=0A+=20=20=20=20case=20ENUMERAL_TYPE:=0A+=20=20=20=20=20=20= {=0A+=09unsigned=20char=20ptr[16]=0A+=09=20=20=3D=20{0xAA,=200xAA,=20= 0xAA,=200xAA,=200xAA,=200xAA,=200xAA,=200xAA,=0A+=09=20=20=20=20=200xAA,=20= 0xAA,=200xAA,=200xAA,=200xAA,=200xAA,=200xAA,=200xAA};=0A+=09int=20= total_bytes=20=3D=20GET_MODE_SIZE=20(SCALAR_INT_TYPE_MODE=20(type));=0A+=09= wide_int=20result=20=3D=20wi::from_buffer=20(ptr,=20total_bytes);=0A+=09= return=20wide_int_to_tree=20(type,=20result);=0A+=20=20=20=20=20=20}=0A=20= =20=20=20=20case=20POINTER_TYPE:=0A=20=20=20=20=20case=20OFFSET_TYPE:=0A=20= =20=20=20=20case=20REFERENCE_TYPE:=0A@@=20-2564,25=20+2571,28=20@@=20= build_pattern_cst=20(tree=20type)=0A=20=0A=20=09if=20(POINTER_SIZE=20=3D=3D= =2064)=0A=20=09=20=20intvalue=20=3D=20largevalue;=0A-=09else=20if=20= (POINTER_SIZE=20=3D=3D=2032)=0A-=09=20=20intvalue=20=3D=20smallvalue;=0A=20= =09else=0A-=09=20=20gcc_assert=20(0);=0A+=09=20=20intvalue=20=3D=20= smallvalue;=0A=20=09return=20build_int_cstu=20(type,=20intvalue);=0A=20=20= =20=20=20=20=20}=0A=20=20=20=20=20case=20REAL_TYPE:=0A=20=20=20=20=20=20=20= {=0A=20=09REAL_VALUE_TYPE=20rnan;=0A+=09machine_mode=20mode=20=3D=20= TYPE_MODE=20(type);=0A=20=0A-=09/*=20create=20an=20quiet=20NAN=20for=20= REAL=20TYPE.=20=20*/=0A-=09if=20(real_nan=20(&rnan,=20"",=201,=20= TYPE_MODE=20(type)))=0A-=09=20=20return=20build_real=20(type,=20rnan);=0A= -=09return=20NULL_TREE;=0A+=09/*=20create=20an=20quiet=20NAN=20for=20= REAL=20TYPE.=0A+=09=20=20=20if=20failed,=20fallback=20to=20MAX_FLOAT=20= instead.=20=20*/=0A+=09if=20(!real_nan=20(&rnan,=20"",=201,=20mode))=0A+=09= =20=20{=0A+=09=20=20=20=20char=20buf[128];=0A+=20=0A+=09=20=20=20=20= get_max_float=20(REAL_MODE_FORMAT=20(mode),=20buf,=20sizeof=20(buf),=20= false);=0A+=09=20=20=20=20real_from_string=20(&rnan,=20buf);=0A+=09=20=20= }=0A+=09return=20build_real=20(type,=20rnan);=0A=20=20=20=20=20=20=20}=0A= -=0A=20=20=20=20=20case=20FIXED_POINT_TYPE:=0A=20=20=20=20=20=20=20{=0A-=09= /*=20FIXME.=20=20What=20should=20we=20put=20into=20a=20fixed=20point?=20=20= */=0A=20=09FIXED_VALUE_TYPE=20fixed;=0A=20=09fixed_from_string=20= (&fixed,=20"0xFFFFFFFFFFFFFFFF",=0A=20=09=09=09=20=20=20SCALAR_TYPE_MODE=20= (type));=0A@@=20-2590,12=20+2600,12=20@@=20build_pattern_cst=20(tree=20= type)=0A=20=20=20=20=20=20=20}=0A=20=20=20=20=20case=20VECTOR_TYPE:=0A=20= =20=20=20=20=20=20{=0A-=09tree=20scalar=20=3D=20build_pattern_cst=20= (TREE_TYPE=20(type));=0A+=09tree=20scalar=20=3D=20= build_pattern_cst_for_auto_init=20(TREE_TYPE=20(type));=0A=20=09return=20= build_vector_from_val=20(type,=20scalar);=0A=20=20=20=20=20=20=20}=0A=20=20= =20=20=20case=20COMPLEX_TYPE:=0A=20=20=20=20=20=20=20{=0A-=09tree=20= element=20=3D=20build_pattern_cst=20(TREE_TYPE=20(type));=0A+=09tree=20= element=20=3D=20build_pattern_cst_for_auto_init=20(TREE_TYPE=20(type));=0A= =20=09return=20build_complex=20(type,=20element,=20element);=0A=20=20=20=20= =20=20=20}=0A=20=20=20=20=20case=20RECORD_TYPE:=0A@@=20-2607,8=20+2617,8=20= @@=20build_pattern_cst=20(tree=20type)=0A=20=09=20=20{=0A=20=09=20=20=20=20= if=20(TREE_CODE=20(field)=20!=3D=20FIELD_DECL)=0A=20=09=20=20=20=20=20=20= continue;=0A-=09=20=20=20=20/*=20if=20the=20field=20is=20a=20variable=20= length=20array,=20it=20should=20be=20the=20last=0A-=09=20=20=20=20=20=20=20= field=20of=20the=20record,=20and=20no=20need=20to=20initialize.=20=20*/=0A= +=09=20=20=20=20/*=20If=20the=20field=20is=20a=20flexible=20array=20= member,=20it=20should=20be=20the=20last=0A+=09=20=20=20=20=20=20=20field=20= of=20the=20record,=20and=20no=20need=20to=20initialize=20it.=20=20*/=0A=20= =09=20=20=20=20if=20(TREE_CODE=20(TREE_TYPE=20(field))=20=3D=3D=20= ARRAY_TYPE=0A=20=09=09&&=20TYPE_SIZE=20(TREE_TYPE=20(field))=20=3D=3D=20= NULL_TREE=0A=20=09=09&&=20((TYPE_DOMAIN=20(TREE_TYPE=20(field))=20!=3D=20= NULL_TREE=0A@@=20-2616,7=20+2626,7=20@@=20build_pattern_cst=20(tree=20= type)=0A=20=09=09=09=09=20=20=20=20=20=20=20=3D=3D=20NULL_TREE)=0A=20=09=09= =20=20=20||=20TYPE_DOMAIN=20(TREE_TYPE=20(field))=20=3D=3D=20NULL_TREE))=0A= =20=09=20=20=20=20=20=20continue;=0A-=09=20=20=20=20field_value=20=3D=20= build_pattern_cst=20(TREE_TYPE=20(field));=0A+=09=20=20=20=20field_value=20= =3D=20build_pattern_cst_for_auto_init=20(TREE_TYPE=20(field));=0A=20=09=20= =20=20=20CONSTRUCTOR_APPEND_ELT=20(v,=20field,=20field_value);=0A=20=09=20= =20}=0A=20=09return=20build_constructor=20(type,=20v);=0A@@=20-2628,25=20= +2638,30=20@@=20build_pattern_cst=20(tree=20type)=0A=20=09unsigned=20= max_size=20=3D=200;=0A=20=09tree=20field_value;=0A=20=09= vec=20*v=20=3D=20NULL;=0A-=09/*=20find=20the=20= field=20with=20the=20largest=20size.=20=20*/=0A+=09/*=20Find=20the=20= field=20with=20the=20largest=20size.=20=20*/=0A=20=09for=20(field=20=3D=20= TYPE_FIELDS=20(type);=20field;=20field=20=3D=20DECL_CHAIN=20(field))=0A=20= =09=20=20{=0A=20=09=20=20=20=20if=20(TREE_CODE=20(field)=20!=3D=20= FIELD_DECL)=0A=20=09=20=20=20=20=20=20continue;=0A-=09=20=20=20=20if=20= (tree_to_uhwi=20(TYPE_SIZE_UNIT=20(TREE_TYPE=20(field)))=20>=3D=20= max_size)=0A+=09=20=20=20=20if=20(tree_fits_uhwi_p=20(TYPE_SIZE_UNIT=20= (TREE_TYPE=20(field))))=0A+=09=20=20=20=20=20=20if=20(tree_to_uhwi=20= (TYPE_SIZE_UNIT=20(TREE_TYPE=20(field)))=20>=3D=20max_size)=0A=20=09=20=20= =20=20=20=20{=0A=20=09=09max_size=20=3D=20tree_to_uhwi=20(TYPE_SIZE_UNIT=20= (TREE_TYPE=20(field)));=0A=20=09=09max_field=20=3D=20field;=0A=20=09=20=20= =20=20=20=20}=0A=20=09=20=20}=0A-=09=20=20field_value=20=3D=20= build_pattern_cst=20(TREE_TYPE=20(max_field));=0A-=09=20=20= CONSTRUCTOR_APPEND_ELT=20(v,=20max_field,=20field_value);=0A+=09if=20= (max_field)=0A+=09=20=20{=0A+=09=20=20=20=20field_value=0A+=09=20=20=20=20= =20=20=3D=20build_pattern_cst_for_auto_init=20(TREE_TYPE=20(max_field));=0A= +=09=20=20=20=20CONSTRUCTOR_APPEND_ELT=20(v,=20max_field,=20= field_value);=0A+=09=20=20}=0A=20=09return=20build_constructor=20(type,=20= v);=0A=20=20=20=20=20=20=20}=0A=20=20=20=20=20case=20ARRAY_TYPE:=0A=20=20= =20=20=20=20=20{=0A=20=09vec=20*elts=20=3D=20= NULL;=0A-=09tree=20element=20=3D=20build_pattern_cst=20(TREE_TYPE=20= (type));=0A+=09tree=20element=20=3D=20build_pattern_cst_for_auto_init=20= (TREE_TYPE=20(type));=0A=20=09tree=20nelts=20=3D=20array_type_nelts=20= (type);=0A=20=09if=20(nelts=20&&=20tree_fits_uhwi_p=20(nelts))=0A=20=09=20= =20{=0A@@=20-2655,14=20+2670,16=20@@=20build_pattern_cst=20(tree=20type)=0A= =20=09=20=20=20=20=20=20CONSTRUCTOR_APPEND_ELT=20(elts,=20NULL_TREE,=20= element);=0A=20=09=20=20=20=20return=20build_constructor=20(type,=20= elts);=0A=20=09=20=20}=0A-=09/*=20variable=20length=20array=20should=20= not=20be=20here.=20=20*/=0A-=09gcc_assert=20(0);=0A+=09/*=20Variable=20= length=20array=20should=20not=20be=20here.=20=20*/=0A+=09gcc_unreachable=20= ();=0A=20=20=20=20=20=20=20}=0A=20=20=20=20=20default:=0A=20=20=20=20=20=20= =20if=20(!AGGREGATE_TYPE_P=20(type))=0A-=09return=20fold_convert=20= (type,=20build_pattern_cst=20(unsigned_type_node));=0A+=09return=0A+=09=20= =20fold_convert=20(type,=0A+=09=09=09build_pattern_cst_for_auto_init=20= (unsigned_type_node));=0A=20=20=20=20=20=20=20else=0A-=09gcc_assert=20= (0);=0A+=09gcc_unreachable=20();=0A=20=0A=20=20=20=20=20}=0A=20}=0Adiff=20= --git=20a/gcc/tree.h=20b/gcc/tree.h=0Aindex=20089494e020a8..7b7d5bf76bd1=20= 100644=0A---=20a/gcc/tree.h=0A+++=20b/gcc/tree.h=0A@@=20-2874,10=20= +2874,6=20@@=20extern=20void=20decl_value_expr_insert=20(tree,=20tree);=0A= =20#define=20DECL_HARD_REGISTER(NODE)=20=20\=0A=20=20=20(VAR_DECL_CHECK=20= (NODE)->decl_with_vis.hard_register)=0A=20=0A-/*=20In=20a=20VAR_DECL,=20= nonzero=20if=20the=20decl=20is=20intentionly=20not=20initialized.=20=20= */=0A-#define=20DECL_UNINITIALIZED(NODE)=20=20\=0A-=20=20(VAR_DECL_CHECK=20= (NODE)->decl_with_vis.uninitialized)=0A-=0A=20=20=20/*=20Used=20to=20= indicate=20that=20this=20DECL=20has=20weak=20linkage.=20=20*/=0A=20= #define=20DECL_WEAK(NODE)=20(DECL_WITH_VIS_CHECK=20= (NODE)->decl_with_vis.weak_flag)=0A=20=0A@@=20-4464,7=20+4460,7=20@@=20= extern=20tree=20build_one_cst=20(tree);=0A=20extern=20tree=20= build_minus_one_cst=20(tree);=0A=20extern=20tree=20build_all_ones_cst=20= (tree);=0A=20extern=20tree=20build_zero_cst=20(tree);=0A-extern=20tree=20= build_pattern_cst=20(tree);=0A+extern=20tree=20= build_pattern_cst_for_auto_init=20(tree);=0A=20extern=20tree=20= build_string=20(unsigned,=20const=20char=20*=20=3D=20NULL);=0A=20extern=20= tree=20build_poly_int_cst=20(tree,=20const=20poly_wide_int_ref=20&);=0A=20= extern=20tree=20build_tree_list=20(tree,=20tree=20CXX_MEM_STAT_INFO);=0A= --=20=0A2.27.0=0A=0A= --Apple-Mail=_0F1E6D9F-6531-43BB-845A-DF7B7E824E75 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii ******The complete 3rd version of the patch are: --Apple-Mail=_0F1E6D9F-6531-43BB-845A-DF7B7E824E75 Content-Disposition: attachment; filename=3rd-version-ftrivial-auto-var-init.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="3rd-version-ftrivial-auto-var-init.patch" Content-Transfer-Encoding: quoted-printable =46rom=20c0ed5c4f536da38987602bd2c9a1150196f7937c=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20qing=20zhao=20=0ADate:=20= Sat,=2012=20Dec=202020=2000:02:28=20+0100=0ASubject:=20[PATCH]=203rd=20= version=0Aadd=20-ftrivial-auto-var-init=20and=20variable=20attribute=20=0A= =20uninitialized=20to=20gcc.=0A=0A---=0A=20gcc/c-family/c-attribs.c=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=2019=20= ++=0A=20gcc/common.opt=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=2029=20+++=0A=20= gcc/doc/extend.texi=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20=2016=20++=0A=20gcc/doc/invoke.texi=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20=2038=20++-=0A=20gcc/expr.c=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=20= 17=20+-=0A=20gcc/flag-types.h=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=2012=20+=0A=20= gcc/gimple.h=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20=2024=20++=0A=20= gcc/gimplify.c=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20195=20++++++++++++++=0A=20= gcc/internal-fn.c=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20=2024=20++=0A=20gcc/internal-fn.def=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20=20=205=20+=0A=20gcc/testsuite/c-c++-common/auto-init-1.c=20=20=20=20= =20=20|=20=2039=20+++=0A=20gcc/testsuite/c-c++-common/auto-init-10.c=20=20= =20=20=20|=20=2017=20++=0A=20gcc/testsuite/c-c++-common/auto-init-11.c=20= =20=20=20=20|=20=2014=20++=0A=20= gcc/testsuite/c-c++-common/auto-init-12.c=20=20=20=20=20|=20=2014=20++=0A= =20gcc/testsuite/c-c++-common/auto-init-13.c=20=20=20=20=20|=20=2023=20= ++=0A=20gcc/testsuite/c-c++-common/auto-init-14.c=20=20=20=20=20|=20=20= 23=20++=0A=20gcc/testsuite/c-c++-common/auto-init-15.c=20=20=20=20=20|=20= =2013=20+=0A=20gcc/testsuite/c-c++-common/auto-init-16.c=20=20=20=20=20|=20= =2013=20+=0A=20gcc/testsuite/c-c++-common/auto-init-2.c=20=20=20=20=20=20= |=20=2039=20+++=0A=20gcc/testsuite/c-c++-common/auto-init-3.c=20=20=20=20= =20=20|=20=2019=20++=0A=20gcc/testsuite/c-c++-common/auto-init-4.c=20=20=20= =20=20=20|=20=2019=20++=0A=20gcc/testsuite/c-c++-common/auto-init-5.c=20=20= =20=20=20=20|=20=2021=20++=0A=20gcc/testsuite/c-c++-common/auto-init-6.c=20= =20=20=20=20=20|=20=2021=20++=0A=20= gcc/testsuite/c-c++-common/auto-init-7.c=20=20=20=20=20=20|=20=2035=20= +++=0A=20gcc/testsuite/c-c++-common/auto-init-8.c=20=20=20=20=20=20|=20=20= 35=20+++=0A=20gcc/testsuite/c-c++-common/auto-init-9.c=20=20=20=20=20=20= |=20=2017=20++=0A=20gcc/testsuite/c-c++-common/auto-init-esra.c=20=20=20= |=20=2035=20+++=0A=20.../g++.dg/auto-init-uninit-pred-1_a.C=20=20=20=20=20= =20=20=20|=20=2063=20+++++=0A=20.../g++.dg/auto-init-uninit-pred-1_b.C=20= =20=20=20=20=20=20=20|=20=2063=20+++++=0A=20= .../g++.dg/auto-init-uninit-pred-2_a.C=20=20=20=20=20=20=20=20|=20=2062=20= +++++=0A=20.../g++.dg/auto-init-uninit-pred-2_b.C=20=20=20=20=20=20=20=20= |=20=2062=20+++++=0A=20.../g++.dg/auto-init-uninit-pred-3_a.C=20=20=20=20= =20=20=20=20|=20=2077=20++++++=0A=20= .../g++.dg/auto-init-uninit-pred-3_b.C=20=20=20=20=20=20=20=20|=20=2087=20= +++++++=0A=20.../g++.dg/auto-init-uninit-pred-4.C=20=20=20=20=20=20=20=20= =20=20|=20=2016=20++=0A=20.../g++.dg/auto-init-uninit-pred-loop-1_a.cc=20= =20|=20=2021=20++=0A=20.../g++.dg/auto-init-uninit-pred-loop-1_b.cc=20=20= |=20=2021=20++=0A=20.../g++.dg/auto-init-uninit-pred-loop-1_c.cc=20=20|=20= =2023=20++=0A=20.../g++.dg/auto-init-uninit-pred-loop_1.cc=20=20=20=20|=20= =2021=20++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-1.c=20=20=20=20=20= |=20=2030=20+++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-11.c=20=20=20=20= |=20=2042=20++++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-12.c=20=20=20= =20|=20=2012=20+=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-13.c=20=20=20= =20|=20=2010=20+=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-14.c=20=20=20= =20|=20=2020=20++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-15.c=20=20=20= =20|=20=2026=20++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-16.c=20=20=20= =20|=20=2023=20++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-17.c=20=20=20= =20|=20=2015=20++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-18.c=20=20=20= =20|=20=2024=20++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-19.c=20=20=20= =20|=20=2026=20++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-2.c=20=20=20= =20=20|=20=2052=20++++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-20.c=20= =20=20=20|=20=2018=20++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-21.c=20= =20=20=20|=20=2033=20+++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-22.c=20= =20=20=20|=20=2069=20+++++=0A=20= gcc/testsuite/gcc.dg/auto-init-uninit-23.c=20=20=20=20|=20=2027=20++=0A=20= gcc/testsuite/gcc.dg/auto-init-uninit-24.c=20=20=20=20|=20=2010=20+=0A=20= gcc/testsuite/gcc.dg/auto-init-uninit-25.c=20=20=20=20|=20=2023=20++=0A=20= gcc/testsuite/gcc.dg/auto-init-uninit-26.c=20=20=20=20|=20=2023=20++=0A=20= gcc/testsuite/gcc.dg/auto-init-uninit-3.c=20=20=20=20=20|=20=2033=20+++=0A= =20gcc/testsuite/gcc.dg/auto-init-uninit-34.c=20=20=20=20|=20=2058=20= +++++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-36.c=20=20=20=20|=20238=20= ++++++++++++++++++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-37.c=20=20=20= =20|=20154=20++++++++++++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-4.c=20= =20=20=20=20|=20=2052=20++++=0A=20= gcc/testsuite/gcc.dg/auto-init-uninit-5.c=20=20=20=20=20|=20=2039=20+++=0A= =20gcc/testsuite/gcc.dg/auto-init-uninit-6.c=20=20=20=20=20|=20=2047=20= ++++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-8.c=20=20=20=20=20|=20=20= 32=20+++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-9.c=20=20=20=20=20|=20= =2042=20++++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-A.c=20=20=20=20=20= |=20117=20+++++++++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-B.c=20=20=20= =20=20|=20=2015=20++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-C.c=20=20= =20=20=20|=20=2021=20++=0A=20gcc/testsuite/gcc.dg/auto-init-uninit-H.c=20= =20=20=20=20|=20=2033=20+++=0A=20= gcc/testsuite/gcc.dg/auto-init-uninit-I.c=20=20=20=20=20|=20=20=208=20+=0A= =20.../gcc.target/aarch64/auto-init-1.c=20=20=20=20=20=20=20=20=20=20|=20= =2032=20+++=0A=20.../gcc.target/aarch64/auto-init-10.c=20=20=20=20=20=20=20= =20=20|=20=2018=20++=0A=20.../gcc.target/aarch64/auto-init-11.c=20=20=20=20= =20=20=20=20=20|=20=2027=20++=0A=20.../gcc.target/aarch64/auto-init-12.c=20= =20=20=20=20=20=20=20=20|=20=2027=20++=0A=20= .../gcc.target/aarch64/auto-init-13.c=20=20=20=20=20=20=20=20=20|=20=20= 22=20++=0A=20.../gcc.target/aarch64/auto-init-14.c=20=20=20=20=20=20=20=20= =20|=20=2020=20++=0A=20.../gcc.target/aarch64/auto-init-15.c=20=20=20=20=20= =20=20=20=20|=20=2020=20++=0A=20.../gcc.target/aarch64/auto-init-16.c=20=20= =20=20=20=20=20=20=20|=20=2022=20++=0A=20= .../gcc.target/aarch64/auto-init-17.c=20=20=20=20=20=20=20=20=20|=20=20= 21=20++=0A=20.../gcc.target/aarch64/auto-init-18.c=20=20=20=20=20=20=20=20= =20|=20=2021=20++=0A=20.../gcc.target/aarch64/auto-init-19.c=20=20=20=20=20= =20=20=20=20|=20=2027=20++=0A=20.../gcc.target/aarch64/auto-init-2.c=20=20= =20=20=20=20=20=20=20=20|=20=2037=20+++=0A=20= .../gcc.target/aarch64/auto-init-20.c=20=20=20=20=20=20=20=20=20|=20=20= 27=20++=0A=20.../gcc.target/aarch64/auto-init-3.c=20=20=20=20=20=20=20=20= =20=20|=20=2019=20++=0A=20.../gcc.target/aarch64/auto-init-4.c=20=20=20=20= =20=20=20=20=20=20|=20=2019=20++=0A=20= .../gcc.target/aarch64/auto-init-5.c=20=20=20=20=20=20=20=20=20=20|=20=20= 19=20++=0A=20.../gcc.target/aarch64/auto-init-6.c=20=20=20=20=20=20=20=20= =20=20|=20=2021=20++=0A=20.../gcc.target/aarch64/auto-init-7.c=20=20=20=20= =20=20=20=20=20=20|=20=2032=20+++=0A=20= .../gcc.target/aarch64/auto-init-8.c=20=20=20=20=20=20=20=20=20=20|=20=20= 33=20+++=0A=20.../gcc.target/aarch64/auto-init-9.c=20=20=20=20=20=20=20=20= =20=20|=20=2019=20++=0A=20gcc/testsuite/gcc.target/i386/auto-init-1.c=20=20= =20|=20=2032=20+++=0A=20gcc/testsuite/gcc.target/i386/auto-init-10.c=20=20= |=20=2019=20++=0A=20gcc/testsuite/gcc.target/i386/auto-init-11.c=20=20|=20= =2030=20+++=0A=20gcc/testsuite/gcc.target/i386/auto-init-12.c=20=20|=20=20= 30=20+++=0A=20gcc/testsuite/gcc.target/i386/auto-init-13.c=20=20|=20=20= 22=20++=0A=20gcc/testsuite/gcc.target/i386/auto-init-14.c=20=20|=20=2022=20= ++=0A=20gcc/testsuite/gcc.target/i386/auto-init-15.c=20=20|=20=2022=20++=0A= =20gcc/testsuite/gcc.target/i386/auto-init-16.c=20=20|=20=2022=20++=0A=20= gcc/testsuite/gcc.target/i386/auto-init-17.c=20=20|=20=2023=20++=0A=20= gcc/testsuite/gcc.target/i386/auto-init-18.c=20=20|=20=2021=20++=0A=20= gcc/testsuite/gcc.target/i386/auto-init-19.c=20=20|=20=2026=20++=0A=20= gcc/testsuite/gcc.target/i386/auto-init-2.c=20=20=20|=20=2037=20+++=0A=20= gcc/testsuite/gcc.target/i386/auto-init-20.c=20=20|=20=2026=20++=0A=20= gcc/testsuite/gcc.target/i386/auto-init-3.c=20=20=20|=20=2020=20++=0A=20= gcc/testsuite/gcc.target/i386/auto-init-4.c=20=20=20|=20=2023=20++=0A=20= gcc/testsuite/gcc.target/i386/auto-init-5.c=20=20=20|=20=2019=20++=0A=20= gcc/testsuite/gcc.target/i386/auto-init-6.c=20=20=20|=20=2022=20++=0A=20= gcc/testsuite/gcc.target/i386/auto-init-7.c=20=20=20|=20=2032=20+++=0A=20= gcc/testsuite/gcc.target/i386/auto-init-8.c=20=20=20|=20=2033=20+++=0A=20= gcc/testsuite/gcc.target/i386/auto-init-9.c=20=20=20|=20=2019=20++=0A=20= gcc/tree-cfg.c=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20=2058=20++++-=0A=20= gcc/tree-core.h=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20=20=202=20+-=0A=20gcc/tree-sra.c=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20146=20++++++++++-=0A=20gcc/tree-ssa-structalias.c=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=20=203=20+=0A=20= gcc/tree-ssa-uninit.c=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20=2055=20++++=0A=20gcc/tree-ssa.c=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20=2040=20+++=0A=20gcc/tree.c=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= 221=20++++++++++++++++=0A=20gcc/tree.h=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20=20=202=20+=0A=20118=20files=20changed,=204143=20insertions(+),=2031=20= deletions(-)=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-1.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-10.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-11.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-12.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-13.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-14.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-15.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-16.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-2.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-3.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-4.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-5.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-6.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-7.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-8.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-9.c=0A=20create=20mode=20100644=20= gcc/testsuite/c-c++-common/auto-init-esra.c=0A=20create=20mode=20100644=20= gcc/testsuite/g++.dg/auto-init-uninit-pred-1_a.C=0A=20create=20mode=20= 100644=20gcc/testsuite/g++.dg/auto-init-uninit-pred-1_b.C=0A=20create=20= mode=20100644=20gcc/testsuite/g++.dg/auto-init-uninit-pred-2_a.C=0A=20= create=20mode=20100644=20= gcc/testsuite/g++.dg/auto-init-uninit-pred-2_b.C=0A=20create=20mode=20= 100644=20gcc/testsuite/g++.dg/auto-init-uninit-pred-3_a.C=0A=20create=20= mode=20100644=20gcc/testsuite/g++.dg/auto-init-uninit-pred-3_b.C=0A=20= create=20mode=20100644=20gcc/testsuite/g++.dg/auto-init-uninit-pred-4.C=0A= =20create=20mode=20100644=20= gcc/testsuite/g++.dg/auto-init-uninit-pred-loop-1_a.cc=0A=20create=20= mode=20100644=20gcc/testsuite/g++.dg/auto-init-uninit-pred-loop-1_b.cc=0A= =20create=20mode=20100644=20= gcc/testsuite/g++.dg/auto-init-uninit-pred-loop-1_c.cc=0A=20create=20= mode=20100644=20gcc/testsuite/g++.dg/auto-init-uninit-pred-loop_1.cc=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-1.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-11.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-12.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-13.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-14.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-15.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-16.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-17.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-18.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-19.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-2.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-20.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-21.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-22.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-23.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-24.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-25.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-26.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-3.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-34.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-36.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-37.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-4.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-5.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-6.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-8.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-9.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-A.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-B.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-C.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-H.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.dg/auto-init-uninit-I.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/aarch64/auto-init-1.c=0A= =20create=20mode=20100644=20= gcc/testsuite/gcc.target/aarch64/auto-init-10.c=0A=20create=20mode=20= 100644=20gcc/testsuite/gcc.target/aarch64/auto-init-11.c=0A=20create=20= mode=20100644=20gcc/testsuite/gcc.target/aarch64/auto-init-12.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/aarch64/auto-init-13.c=0A= =20create=20mode=20100644=20= gcc/testsuite/gcc.target/aarch64/auto-init-14.c=0A=20create=20mode=20= 100644=20gcc/testsuite/gcc.target/aarch64/auto-init-15.c=0A=20create=20= mode=20100644=20gcc/testsuite/gcc.target/aarch64/auto-init-16.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/aarch64/auto-init-17.c=0A= =20create=20mode=20100644=20= gcc/testsuite/gcc.target/aarch64/auto-init-18.c=0A=20create=20mode=20= 100644=20gcc/testsuite/gcc.target/aarch64/auto-init-19.c=0A=20create=20= mode=20100644=20gcc/testsuite/gcc.target/aarch64/auto-init-2.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/aarch64/auto-init-20.c=0A= =20create=20mode=20100644=20= gcc/testsuite/gcc.target/aarch64/auto-init-3.c=0A=20create=20mode=20= 100644=20gcc/testsuite/gcc.target/aarch64/auto-init-4.c=0A=20create=20= mode=20100644=20gcc/testsuite/gcc.target/aarch64/auto-init-5.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/aarch64/auto-init-6.c=0A= =20create=20mode=20100644=20= gcc/testsuite/gcc.target/aarch64/auto-init-7.c=0A=20create=20mode=20= 100644=20gcc/testsuite/gcc.target/aarch64/auto-init-8.c=0A=20create=20= mode=20100644=20gcc/testsuite/gcc.target/aarch64/auto-init-9.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-1.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-10.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-11.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-12.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-13.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-14.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-15.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-16.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-17.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-18.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-19.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-2.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-20.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-3.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-4.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-5.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-6.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-7.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-8.c=0A=20= create=20mode=20100644=20gcc/testsuite/gcc.target/i386/auto-init-9.c=0A=0A= diff=20--git=20a/gcc/c-family/c-attribs.c=20b/gcc/c-family/c-attribs.c=0A= index=20f7dad7a91d70..de53c3a2da88=20100644=0A---=20= a/gcc/c-family/c-attribs.c=0A+++=20b/gcc/c-family/c-attribs.c=0A@@=20= -81,6=20+81,7=20@@=20static=20tree=20handle_artificial_attribute=20(tree=20= *,=20tree,=20tree,=20int,=20bool=20*);=0A=20static=20tree=20= handle_flatten_attribute=20(tree=20*,=20tree,=20tree,=20int,=20bool=20= *);=0A=20static=20tree=20handle_error_attribute=20(tree=20*,=20tree,=20= tree,=20int,=20bool=20*);=0A=20static=20tree=20handle_used_attribute=20= (tree=20*,=20tree,=20tree,=20int,=20bool=20*);=0A+static=20tree=20= handle_uninitialized_attribute=20(tree=20*,=20tree,=20tree,=20int,=20= bool=20*);=0A=20static=20tree=20handle_externally_visible_attribute=20= (tree=20*,=20tree,=20tree,=20int,=0A=20=09=09=09=09=09=09=20bool=20*);=0A= =20static=20tree=20handle_no_reorder_attribute=20(tree=20*,=20tree,=20= tree,=20int,=0A@@=20-324,6=20+325,8=20@@=20const=20struct=20= attribute_spec=20c_common_attribute_table[]=20=3D=0A=20=09=09=09=20=20=20= =20=20=20handle_used_attribute,=20NULL=20},=0A=20=20=20{=20"unused",=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=200,=200,=20false,=20false,=20= false,=20false,=0A=20=09=09=09=20=20=20=20=20=20handle_unused_attribute,=20= NULL=20},=0A+=20=20{=20"uninitialized",=09=20=20=20=20=20=200,=200,=20= true,=20false,=20false,=20false,=0A+=09=09=09=20=20=20=20=20=20= handle_uninitialized_attribute,=20NULL=20},=0A=20=20=20{=20= "externally_visible",=20=20=20=20=200,=200,=20true,=20=20false,=20false,=20= false,=0A=20=09=09=09=20=20=20=20=20=20= handle_externally_visible_attribute,=20NULL=20},=0A=20=20=20{=20= "no_reorder",=09=20=20=20=20=20=200,=200,=20true,=20false,=20false,=20= false,=0A@@=20-1523,6=20+1526,22=20@@=20handle_unused_attribute=20(tree=20= *node,=20tree=20name,=20tree=20ARG_UNUSED=20(args),=0A=20=20=20return=20= NULL_TREE;=0A=20}=0A=20=0A+/*=20Handle=20an=20"uninitialized"=20= attribute;=20arguments=20as=20in=0A+=20=20=20struct=20= attribute_spec.handler.=20=20*/=0A+=0A+static=20tree=0A= +handle_uninitialized_attribute=20(tree=20*node,=20tree=20name,=20tree=20= ARG_UNUSED=20(args),=0A+=09=09=09=09int=20ARG_UNUSED=20(flags),=20bool=20= *no_add_attrs)=0A+{=0A+=20=20if=20(!VAR_P=20(*node))=0A+=20=20=20=20{=0A= +=20=20=20=20=20=20warning=20(OPT_Wattributes,=20"%qE=20attribute=20= ignored",=20name);=0A+=20=20=20=20=20=20*no_add_attrs=20=3D=20true;=0A+=20= =20=20=20}=0A+=0A+=20=20return=20NULL_TREE;=0A+}=0A+=0A=20/*=20Handle=20= a=20"externally_visible"=20attribute;=20arguments=20as=20in=0A=20=20=20=20= struct=20attribute_spec.handler.=20=20*/=0A=20=0Adiff=20--git=20= a/gcc/common.opt=20b/gcc/common.opt=0Aindex=206645539f5e52..b62c99c4325b=20= 100644=0A---=20a/gcc/common.opt=0A+++=20b/gcc/common.opt=0A@@=20-3053,6=20= +3053,35=20@@=20ftree-scev-cprop=0A=20Common=20Report=20= Var(flag_tree_scev_cprop)=20Init(1)=20Optimization=0A=20Enable=20copy=20= propagation=20of=20scalar-evolution=20information.=0A=20=0A= +ftrivial-auto-var-init=3D=0A+Common=20Joined=20RejectNegative=20= Enum(auto_init_type)=20Var(flag_trivial_auto_var_init)=20= Init(AUTO_INIT_UNINITIALIZED)=0A= +-ftrivial-auto-var-init=3D[uninitialized|pattern|zero]=09Add=20= initializations=20to=20automatic=20variables.=0A+=0A+Enum=0A= +Name(auto_init_type)=20Type(enum=20auto_init_type)=20= UnknownError(unrecognized=20automatic=20variable=20initialization=20type=20= %qs)=0A+=0A+EnumValue=0A+Enum(auto_init_type)=20String(uninitialized)=20= Value(AUTO_INIT_UNINITIALIZED)=0A+=0A+EnumValue=0A+Enum(auto_init_type)=20= String(pattern)=20Value(AUTO_INIT_PATTERN)=0A+=0A+EnumValue=0A= +Enum(auto_init_type)=20String(zero)=20Value(AUTO_INIT_ZERO)=0A+=0A= +fauto-var-init-approach=3D=0A+Common=20Joined=20RejectNegative=20= Enum(auto_init_approach)=20Var(flag_auto_init_approach)=20= Init(AUTO_INIT_D))=0A+-fauto-var-init-approach=3D[A|D]=09Choose=20the=20= approach=20to=20initialize=20automatic=20variables.=0A+=0A+Enum=0A= +Name(auto_init_approach)=20Type(enum=20auto_init_approach)=20= UnknownError(unrecognized=20automatic=20variable=20initialization=20= approach=20%qs)=0A+=0A+EnumValue=0A+Enum(auto_init_approach)=20String(A)=20= Value(AUTO_INIT_A)=0A+=0A+EnumValue=0A+Enum(auto_init_approach)=20= String(D)=20Value(AUTO_INIT_D)=0A+=0A=20;=20-fverbose-asm=20causes=20= extra=20commentary=20information=20to=20be=20produced=20in=0A=20;=20the=20= generated=20assembly=20code=20(to=20make=20it=20more=20readable).=20=20= This=20option=0A=20;=20is=20generally=20only=20of=20use=20to=20those=20= who=20actually=20need=20to=20read=20the=0Adiff=20--git=20= a/gcc/doc/extend.texi=20b/gcc/doc/extend.texi=0Aindex=20= 0c969085d1f2..a876d9e7a353=20100644=0A---=20a/gcc/doc/extend.texi=0A+++=20= b/gcc/doc/extend.texi=0A@@=20-7436,6=20+7436,22=20@@=20will=20be=20= placed=20in=20new,=20unique=20sections.=0A=20=0A=20This=20additional=20= functionality=20requires=20Binutils=20version=202.36=20or=20later.=0A=20=0A= +@item=20uninitialized=0A+@cindex=20@code{uninitialized}=20variable=20= attribute=0A+This=20attribute,=20attached=20to=20a=20variable=20with=20= automatic=20storage,=20means=20that=0A+the=20variable=20should=20not=20= be=20automatically=20initialized=20by=20the=20compiler=20when=0A+the=20= option=20@code{-ftrivial-auto-var-init}=20presents.=0A+=0A+With=20the=20= option=20@code{-ftrivial-auto-var-init},=20all=20the=20automatic=20= variables=0A+that=20do=20not=20have=20explicit=20initializers=20will=20= be=20initialized=20by=20the=20compiler.=0A+These=20additional=20compiler=20= initializations=20might=20incur=20run-time=20overhead,=0A+sometimes=20= dramatically.=20=20This=20attribute=20can=20be=20used=20to=20mark=20some=20= variables=0A+to=20be=20excluded=20from=20such=20automatical=20= initialization=20in=20order=20to=20reduce=20runtime=0A+overhead.=0A+=0A= +This=20attribute=20has=20no=20effect=20when=20the=20option=20= @code{-ftrivial-auto-var-init}=0A+does=20not=20present.=0A+=0A=20@item=20= vector_size=20(@var{bytes})=0A=20@cindex=20@code{vector_size}=20variable=20= attribute=0A=20This=20attribute=20specifies=20the=20vector=20size=20for=20= the=20type=20of=20the=20declared=0Adiff=20--git=20a/gcc/doc/invoke.texi=20= b/gcc/doc/invoke.texi=0Aindex=20f7e8c8b29b0e..e68cbb13d9e8=20100644=0A= ---=20a/gcc/doc/invoke.texi=0A+++=20b/gcc/doc/invoke.texi=0A@@=20-554,9=20= +554,9=20@@=20Objective-C=20and=20Objective-C++=20Dialects}.=0A=20= -ftree-parallelize-loops=3D@var{n}=20=20-ftree-pre=20=20= -ftree-partial-pre=20=20-ftree-pta=20@gol=0A=20-ftree-reassoc=20=20= -ftree-scev-cprop=20=20-ftree-sink=20=20-ftree-slsr=20=20-ftree-sra=20= @gol=0A=20-ftree-switch-conversion=20=20-ftree-tail-merge=20@gol=0A= --ftree-ter=20=20-ftree-vectorize=20=20-ftree-vrp=20=20= -funconstrained-commons=20@gol=0A--funit-at-a-time=20=20= -funroll-all-loops=20=20-funroll-loops=20@gol=0A= --funsafe-math-optimizations=20=20-funswitch-loops=20@gol=0A+-ftree-ter=20= =20-ftree-vectorize=20=20-ftree-vrp=20=20-ftrivial-auto-var-init=20@gol=0A= +-funconstrained-commons=20-funit-at-a-time=20=20-funroll-all-loops=20= @gol=0A+-funroll-loops=20-funsafe-math-optimizations=20=20= -funswitch-loops=20@gol=0A=20-fipa-ra=20=20= -fvariable-expansion-in-unroller=20=20-fvect-cost-model=20=20-fvpt=20= @gol=0A=20-fweb=20=20-fwhole-program=20=20-fwpa=20=20-fuse-linker-plugin=20= -fzero-call-used-regs=20@gol=0A=20--param=20@var{name}=3D@var{value}=0A= @@=20-11550,6=20+11550,38=20@@=20Perform=20basic=20block=20vectorization=20= on=20trees.=20This=20flag=20is=20enabled=20by=20default=20at=0A=20= @option{-O3}=20and=20by=20@option{-ftree-vectorize},=20= @option{-fprofile-use},=0A=20and=20@option{-fauto-profile}.=0A=20=0A= +@item=20-ftrivial-auto-var-init=3D@var{choice}=0A+@opindex=20= ftrivial-auto-var-init=0A+Initialize=20automatic=20variables=20with=20= either=20a=20pattern=20or=20with=20zeroes=20to=20increase=0A+the=20= security=20and=20predictability=20of=20a=20program=20by=20preventing=20= uninitialized=20memory=0A+disclosure=20and=20use.=0A+GCC=20still=20= considers=20an=20automatic=20variable=20that=20doesn't=20have=20an=20= explicit=0A+initializer=20as=20uninitialized,=20-Wuninitialized=20will=20= still=20report=20warning=20messages=0A+on=20such=20automatic=20= variables.=0A+=0A+The=20three=20values=20of=20@var{choice}=20are:=0A+=0A= +@itemize=20@bullet=0A+@item=0A+@samp{uninitialized}=20doesn't=20= initialize=20any=20automatic=20variables.=0A+This=20is=20C=20and=20C++'s=20= default.=0A+=0A+@item=0A+@samp{pattern}=20Initialize=20automatic=20= variables=20with=20values=20which=20will=20likely=0A+transform=20logic=20= bugs=20into=20crashes=20down=20the=20line,=20are=20easily=20recognized=20= in=20a=0A+crash=20dump=20and=20without=20being=20values=20that=20= programmers=20can=20rely=20on=20for=20useful=0A+program=20semantics.=0A= +The=20values=20used=20for=20pattern=20initialization=20might=20be=20= changed=20in=20the=20future.=0A+=0A+@item=0A+@samp{zero}=20Initialize=20= automatic=20variables=20with=20zeroes.=0A+@end=20itemize=0A+=0A+The=20= default=20is=20@samp{uninitialized}.=0A+=0A+You=20can=20control=20this=20= behavior=20for=20a=20specific=20variable=20by=20using=20the=20variable=0A= +attribute=20@code{uninitialized}=20(@pxref{Variable=20Attributes}).=0A+=0A= =20@item=20-fvect-cost-model=3D@var{model}=0A=20@opindex=20= fvect-cost-model=0A=20Alter=20the=20cost=20model=20used=20for=20= vectorization.=20=20The=20@var{model}=20argument=0Adiff=20--git=20= a/gcc/expr.c=20b/gcc/expr.c=0Aindex=20798285eb52ca..9092349d7017=20= 100644=0A---=20a/gcc/expr.c=0A+++=20b/gcc/expr.c=0A@@=20-6539,14=20= +6539,19=20@@=20store_constructor=20(tree=20exp,=20rtx=20target,=20int=20= cleared,=20poly_int64=20size,=0A=20=09=20=20=20=20cleared=20=3D=201;=0A=20= =09=20=20}=0A=20=0A-=20=20=20=20=20=20=20=20/*=20If=20the=20constructor=20= has=20fewer=20fields=20than=20the=20structure=20or=0A-=09=20=20=20if=20= we=20are=20initializing=20the=20structure=20to=20mostly=20zeros,=20clear=0A= -=09=20=20=20the=20whole=20structure=20first.=20=20Don't=20do=20this=20= if=20TARGET=20is=20a=0A-=09=20=20=20register=20whose=20mode=20size=20= isn't=20equal=20to=20SIZE=20since=0A-=09=20=20=20clear_storage=20can't=20= handle=20this=20case.=20=20*/=0A+=09/*=20If=20the=20constructor=20has=20= fewer=20fields=20than=20the=20structure,=0A+=09=20=20=20or=20if=20we=20= are=20initializing=20the=20structure=20to=20mostly=20zeros,=0A+=09=20=20=20= or=20if=20the=20user=20requests=20to=20initialize=20automatic=20= variables=20with=0A+=09=20=20=20paddings=20inside=20the=20type,=0A+=09=20= =20=20we=20should=20clear=20the=20whole=20structure=20first.=0A+=09=20=20= =20Don't=20do=20this=20if=20TARGET=20is=20a=20register=20whose=20mode=20= size=20isn't=20equal=0A+=09=20=20=20SIZE=20since=20clear_storage=20can't=20= handle=20this=20case.=20=20*/=0A=20=09else=20if=20(known_size_p=20(size)=0A= =20=09=09=20&&=20(((int)=20CONSTRUCTOR_NELTS=20(exp)=20!=3D=20= fields_length=20(type))=0A-=09=09=20=20=20=20=20||=20mostly_zeros_p=20= (exp))=0A+=09=09=20=20=20=20=20||=20mostly_zeros_p=20(exp)=0A+=09=09=20=20= =20=20=20||=20(flag_trivial_auto_var_init=20>=20AUTO_INIT_UNINITIALIZED=0A= +=09=09=09=20&&=20!TREE_STATIC=20(exp)=0A+=09=09=09=20&&=20= type_has_padding=20(type)))=0A=20=09=09=20&&=20(!REG_P=20(target)=0A=20=09= =09=20=20=20=20=20||=20known_eq=20(GET_MODE_SIZE=20(GET_MODE=20= (target)),=20size)))=0A=20=09=20=20{=0Adiff=20--git=20a/gcc/flag-types.h=20= b/gcc/flag-types.h=0Aindex=209342bd87be30..0bd93256f9ca=20100644=0A---=20= a/gcc/flag-types.h=0A+++=20b/gcc/flag-types.h=0A@@=20-242,6=20+242,18=20= @@=20enum=20vect_cost_model=20{=0A=20=20=20VECT_COST_MODEL_DEFAULT=20=3D=20= 1=0A=20};=0A=20=0A+/*=20Automatic=20variable=20initialization=20type.=20=20= */=0A+enum=20auto_init_type=20{=0A+=20=20AUTO_INIT_UNINITIALIZED=20=3D=20= 0,=0A+=20=20AUTO_INIT_PATTERN=20=3D=201,=0A+=20=20AUTO_INIT_ZERO=20=3D=20= 2=0A+};=0A+=0A+enum=20auto_init_approach=20{=0A+=20=20AUTO_INIT_A=20=3D=20= 0,=0A+=20=20AUTO_INIT_D=20=3D=201=0A+};=0A+=0A=20/*=20Different=20= instrumentation=20modes.=20=20*/=0A=20enum=20sanitize_code=20{=0A=20=20=20= /*=20AddressSanitizer.=20=20*/=0Adiff=20--git=20a/gcc/gimple.h=20= b/gcc/gimple.h=0Aindex=208a1db3cc7db6..d5597120008e=20100644=0A---=20= a/gcc/gimple.h=0A+++=20b/gcc/gimple.h=0A@@=20-150,6=20+150,7=20@@=20enum=20= gf_mask=20{=0A=20=20=20=20=20GF_CALL_BY_DESCRIPTOR=09=3D=201=20<<=2010,=0A= =20=20=20=20=20GF_CALL_NOCF_CHECK=09=09=3D=201=20<<=2011,=0A=20=20=20=20=20= GF_CALL_FROM_NEW_OR_DELETE=09=3D=201=20<<=2012,=0A+=20=20=20=20= GF_CALL_MEMSET_FOR_UNINIT=09=3D=201=20<<=2013,=0A=20=20=20=20=20= GF_OMP_PARALLEL_COMBINED=09=3D=201=20<<=200,=0A=20=20=20=20=20= GF_OMP_TASK_TASKLOOP=09=3D=201=20<<=200,=0A=20=20=20=20=20= GF_OMP_TASK_TASKWAIT=09=3D=201=20<<=201,=0A@@=20-3488,6=20+3489,29=20@@=20= gimple_call_alloca_for_var_p=20(gimple=20*s)=0A=20=20=20return=20= (gc->subcode=20&=20GF_CALL_ALLOCA_FOR_VAR)=20!=3D=200;=0A=20}=0A=20=0A= +/*=20If=20FOR_UNINIT=20is=20true,=20GIMPLE_CALL=20S=20is=20a=20call=20= to=20builtin_memset=20that=0A+=20=20=20is=20known=20to=20be=20emitted=20= for=20unintialized=20VLA=20objects.=20=20*/=0A+=0A+static=20inline=20= void=0A+gimple_call_set_memset_for_uninit=20(gcall=20*s,=20bool=20= for_uninit)=0A+{=0A+=20=20if=20(for_uninit)=0A+=20=20=20=20s->subcode=20= |=3D=20GF_CALL_MEMSET_FOR_UNINIT;=0A+=20=20else=0A+=20=20=20=20= s->subcode=20&=3D=20~GF_CALL_MEMSET_FOR_UNINIT;=0A+}=0A+=0A+/*=20Return=20= true=20if=20S=20is=20a=20call=20to=20builtin_memset=20emitted=20for=20= uninitialized=0A+=20=20=20VLA=20objects.=20=20*/=0A+=0A+static=20inline=20= bool=0A+gimple_call_memset_for_uninit_p=20(gimple=20*s)=0A+{=0A+=20=20= const=20gcall=20*gc=20=3D=20GIMPLE_CHECK2=20(s);=0A+=20=20= return=20(gc->subcode=20&=20GF_CALL_MEMSET_FOR_UNINIT)=20!=3D=200;=0A+}=0A= +=0A+=0A=20/*=20If=20BY_DESCRIPTOR_P=20is=20true,=20GIMPLE_CALL=20S=20is=20= an=20indirect=20call=20for=20which=0A=20=20=20=20pointers=20to=20nested=20= function=20are=20descriptors=20instead=20of=20trampolines.=20=20*/=0A=20=0A= diff=20--git=20a/gcc/gimplify.c=20b/gcc/gimplify.c=0Aindex=20= 54cb66bd1dd5..b14e79a84fd4=20100644=0A---=20a/gcc/gimplify.c=0A+++=20= b/gcc/gimplify.c=0A@@=20-1712,6=20+1712,122=20@@=20gimplify_vla_decl=20= (tree=20decl,=20gimple_seq=20*seq_p)=0A=20=0A=20=20=20gimplify_and_add=20= (t,=20seq_p);=0A=20=0A+=20=20/*=20Add=20a=20call=20to=20memset=20or=20= calls=20to=20memcpy=20to=20initialize=20this=20vla=0A+=20=20=20=20=20= when=20the=20user=20requested.=20=20*/=0A+=20=20if=20(!DECL_ARTIFICIAL=20= (decl)=0A+=20=20=20=20=20=20&&=20VAR_P=20(decl)=0A+=20=20=20=20=20=20&&=20= !DECL_EXTERNAL=20(decl)=0A+=20=20=20=20=20=20&&=20!TREE_STATIC=20(decl)=0A= +=20=20=20=20=20=20&&=20!lookup_attribute=20("uninitialized",=20= DECL_ATTRIBUTES=20(decl)))=0A+=20=20=20=20switch=20= (flag_trivial_auto_var_init)=0A+=20=20=20=20=20=20{=0A+=20=20=20=20=20=20= case=20AUTO_INIT_UNINITIALIZED:=0A+=09break;=0A+=20=20=20=20=20=20case=20= AUTO_INIT_ZERO:=0A+=09{=0A+=09=20=20/*=20Generate=20a=20call=20to=20= memset=20to=20initialize=20this=20vla.=20=20*/=0A+=09=20=20gcall=20*gs;=0A= +=09=20=20t=20=3D=20builtin_decl_implicit=20(BUILT_IN_MEMSET);=0A+=09=20=20= gs=20=3D=20gimple_build_call=20(t,=203,=20addr,=20integer_zero_node,=0A+=09= =09=09=09=20=20DECL_SIZE_UNIT=20(decl));=0A+=09=20=20= gimple_call_set_memset_for_uninit=20(gs,=20true);=0A+=09=20=20= gimplify_seq_add_stmt=20(seq_p,=20gs);=0A+=09}=0A+=09break;=0A+=20=20=20=20= =20=20case=20AUTO_INIT_PATTERN:=0A+=09{=0A+=09=20=20/*=20Generate=20the=20= following=20sequence=20to=20initialize=20this=20vla:=0A+=09=20=20=20=20=20= if=20(DECL_SIZE_UNIT=20(decl)=20>=200)=20goto=20label_true;=0A+=09=09=09=09= =09=20=20=20=20else=20goto=20label_cont;=0A+=09=20=20=20=20=20= label_true:=0A+=09=20=20=20=20=20=20{=0A+=09=09element_type=20=3D=20= TREE_TYPE=20(TREE_TYPE=20(decl));=0A+=09=09size_of_element=20=3D=20= DECL_SIZE_UNIT=20(element_type);=0A+=09=09init_node=20=3D=20= build_pattern_cst_for_auto_init=20(element_type);=0A+=09=09cur=20=3D=20= addr;=0A+=09=09offset=20=3D=20DECL_SIZE_UNIT=20(decl)=20-=20= size_of_element;=0A+=09=09end=20=3D=20addr=20+=20offset;=0A+=0A+=09=09= label_loop:=0A+=09=09=20=20{=0A+=09=09=20=20=20=20memcpy=20(cur,=20= &init_node,=20size_of_element);=0A+=09=09=20=20=20=20cur=20=20+=3D=20= size_of_element;=0A+=09=09=20=20=20=20if=20(cur=20<=3D=20end)=20goto=20= label_loop;=0A+=09=09=09=09=20=20=20=20else=20goto=20label_cont;=0A+=09=09= =20=20}=0A+=09=20=20=20=20=20=20}=0A+=09=20=20=20=20=20=20label_cont:=0A= +=09=20=20*/=0A+=0A+=09=20=20tree=20size_of_element,=20element_type;=0A+=09= =20=20tree=20cur,=20end,=20offset;=0A+=09=20=20tree=20init_node,=20= addrof_init_node;=0A+=09=20=20tree=20t;=0A+=0A+=09=20=20tree=20= label_true=20=3D=20create_artificial_label=20(UNKNOWN_LOCATION);=0A+=09=20= =20tree=20label_cont=20=3D=20create_artificial_label=20= (UNKNOWN_LOCATION);=0A+=09=20=20tree=20label_loop=20=3D=20= create_artificial_label=20(UNKNOWN_LOCATION);=0A+=0A+=09=20=20= element_type=20=3D=20TREE_TYPE=20(TREE_TYPE=20(decl));=0A+=09=20=20/*=20= If=20this=20is=20a=20nested=20array,=20we=20should=20go=20down=20to=20= the=20element=20that=0A+=09=20=20=20=20=20is=20not=20an=20array.=20=20*/=0A= +=09=20=20while=20(TREE_CODE=20(element_type)=20=3D=3D=20ARRAY_TYPE)=0A+=09= =20=20=20=20element_type=20=3D=20TREE_TYPE=20(element_type);=0A+=0A+=09=20= =20gcond=20*cond_stmt=20=3D=20gimple_build_cond=20(GT_EXPR,=20= DECL_SIZE_UNIT=20(decl),=0A+=09=09=09=09=09=09build_zero_cst=20= (sizetype),=0A+=09=09=09=09=09=09label_true,=0A+=09=09=09=09=09=09= label_cont);=0A+=09=20=20gimplify_seq_add_stmt=20(seq_p,=20cond_stmt);=0A= +=09=20=20gimplify_seq_add_stmt=20(seq_p,=20gimple_build_label=20= (label_true));=0A+=0A+=09=20=20size_of_element=20=3D=20create_tmp_var=20= (sizetype,=0A+=09=09=09=09=09=20=20=20=20".size_of_element");=0A+=0A+=09=20= =20init_node=20=3D=20create_tmp_var=20(element_type,=20".init_node");=0A= +=09=20=20mark_addressable=20(init_node);=0A+=09=20=20addrof_init_node=20= =3D=20build_fold_addr_expr_loc=20(UNKNOWN_LOCATION,=0A+=09=09=09=09=09=09= =20=20=20=20=20=20=20init_node);=0A+=0A+=09=20=20gimplify_assign=20= (size_of_element,=20TYPE_SIZE_UNIT=20(element_type),=0A+=09=09=09=20=20=20= seq_p);=0A+=09=20=20gimplify_assign=20(init_node,=0A+=09=09=09=20=20=20= build_pattern_cst_for_auto_init=20(element_type),=0A+=09=09=09=20=20=20= seq_p);=0A+=0A+=09=20=20cur=20=3D=20create_tmp_var=20(ptr_type,=20= ".cur_addr");=0A+=09=20=20end=20=3D=20create_tmp_var=20(ptr_type,=20= ".end_addr");=0A+=09=20=20offset=20=3D=20create_tmp_var=20(sizetype,=20= ".offset");=0A+=0A+=09=20=20gimplify_assign=20(cur,=20addr,=20seq_p);=0A= +=09=20=20gimplify_seq_add_stmt=20(seq_p,=0A+=09=09=09=09=20= gimple_build_assign=20(offset,=20MINUS_EXPR,=0A+=09=09=09=09=09=09=20=20=20= =20=20=20DECL_SIZE_UNIT=20(decl),=0A+=09=09=09=09=09=09=20=20=20=20=20=20= size_of_element));=0A+=09=20=20gimplify_seq_add_stmt=20(seq_p,=0A+=09=09=09= =09=20gimple_build_assign=20(end,=20POINTER_PLUS_EXPR,=0A+=09=09=09=09=09= =09=20=20=20=20=20=20addr,=20offset));=0A+=0A+=09=20=20= gimplify_seq_add_stmt=20(seq_p,=20gimple_build_label=20(label_loop));=0A= +=0A+=09=20=20t=20=3D=20builtin_decl_implicit=20(BUILT_IN_MEMCPY);=0A+=09= =20=20gimplify_seq_add_stmt=20(seq_p,=0A+=09=09=09=09=20= gimple_build_call=20(t,=203,=20cur,=0A+=09=09=09=09=09=09=20=20=20=20= addrof_init_node,=0A+=09=09=09=09=09=09=20=20=20=20size_of_element));=0A= +=09=20=20gimplify_seq_add_stmt=20(seq_p,=0A+=09=09=09=09=20= gimple_build_assign=20(cur,=20POINTER_PLUS_EXPR,=0A+=09=09=09=09=09=09=20= =20=20=20=20=20cur,=20size_of_element));=0A+=09=20=20cond_stmt=20=3D=20= gimple_build_cond=20(LE_EXPR,=20cur,=20end,=20label_loop,=0A+=09=09=09=09= =09=20label_cont);=0A+=09=20=20gimplify_seq_add_stmt=20(seq_p,=20= cond_stmt);=0A+=09=20=20gimplify_seq_add_stmt=20(seq_p,=20= gimple_build_label=20(label_cont));=0A+=09}=0A+=09break;=0A+=20=20=20=20=20= =20default:=0A+=09gcc_assert=20(0);=0A+=20=20=20=20=20=20}=0A+=0A=20=20=20= /*=20Record=20the=20dynamic=20allocation=20associated=20with=20DECL=20if=20= requested.=20=20*/=0A=20=20=20if=20(flag_callgraph_info=20&=20= CALLGRAPH_INFO_DYNAMIC_ALLOC)=0A=20=20=20=20=20record_dynamic_alloc=20= (decl);=0A@@=20-1734,6=20+1850,62=20@@=20force_labels_r=20(tree=20*tp,=20= int=20*walk_subtrees,=20void=20*data=20ATTRIBUTE_UNUSED)=0A=20=20=20= return=20NULL_TREE;=0A=20}=0A=20=0A+=0A+/*=20Build=20a=20call=20to=20= internal=20const=20function=20DEFERRED_INIT:=0A+=20=20=201st=20argument:=20= DECL;=0A+=20=20=202nd=20argument:=20INIT_TYPE;=0A+=0A+=20=20=20as=20= DEFERRED_INIT=20(DECL,=20INIT_TYPE).=20=20*/=0A+=0A+static=20gimple=20*=0A= +build_deferred_init=20(tree=20decl,=0A+=09=09=20=20=20=20=20enum=20= auto_init_type=20init_type)=0A+{=0A+=20=20tree=20init_type_node=0A+=20=20= =20=20=3D=20build_int_cst=20(integer_type_node,=20(int)=20init_type);=0A= +=20=20=20return=20gimple_build_call_internal=20(IFN_DEFERRED_INIT,=202,=0A= +=09=09=09=09=20=20=20=20=20=20decl,=20init_type_node);=0A+}=0A+=0A+/*=20= Generate=20initialization=20to=20automatic=20variable=20DECL=20based=20= on=20INIT_TYPE.=20=20*/=0A+static=20void=0A+gimple_add_init_for_auto_var=20= (tree=20decl,=0A+=09=09=09=20=20=20=20=20=20enum=20auto_init_type=20= init_type,=0A+=09=09=09=20=20=20=20=20=20enum=20auto_init_approach=20= init_approach,=0A+=09=09=09=20=20=20=20=20=20gimple_seq=20*seq_p)=0A+{=0A= +=20=20gcc_assert=20(VAR_P=20(decl)=20&&=20!DECL_EXTERNAL=20(decl)=20&&=20= !TREE_STATIC=20(decl));=0A+=20=20switch=20(init_type)=0A+=20=20{=0A+=20=20= case=20AUTO_INIT_UNINITIALIZED:=0A+=20=20=20=20gcc_assert=20(0);=0A+=20=20= =20=20break;=0A+=20=20case=20AUTO_INIT_PATTERN:=0A+=20=20case=20= AUTO_INIT_ZERO:=0A+=20=20=20=20if=20(init_approach=20=3D=3D=20= AUTO_INIT_A)=0A+=20=20=20=20{=0A+=20=20=20=20=20=20tree=20init=20=3D=20= (init_type=20=3D=3D=20AUTO_INIT_PATTERN)=0A+=09=09=20=20=20?=20= build_pattern_cst_for_auto_init=20(TREE_TYPE=20(decl))=20:=0A+=09=09=20=20= =20build_zero_cst=20(TREE_TYPE=20(decl));=0A+=20=20=20=20=20=20init=20=3D=20= build2=20(INIT_EXPR,=20void_type_node,=20decl,=20init);=0A+=20=20=20=20=20= =20gimplify_and_add=20(init,=20seq_p);=0A+=20=20=20=20=20=20ggc_free=20= (init);=0A+=20=20=20=20}=0A+=20=20=20=20else=20if=20(init_approach=20=3D=3D= =20AUTO_INIT_D)=0A+=20=20=20=20{=0A+=20=20=20=20=20=20gimple=20*call=20=3D= =20build_deferred_init=20(decl,=20init_type);=0A+=20=20=20=20=20=20= gimple_call_set_lhs=20(call,=20decl);=0A+=20=20=20=20=20=20= gimplify_seq_add_stmt=20(seq_p,=20call);=0A+=20=20=20=20}=0A+=20=20=20=20= else=0A+=20=20=20=20=20=20gcc_assert=20(0);=0A+=20=20=20=20break;=0A+=20=20= default:=0A+=20=20=20=20gcc_unreachable=20();=0A+=20=20}=0A+}=0A+=0A+=0A=20= /*=20Gimplify=20a=20DECL_EXPR=20node=20*STMT_P=20by=20making=20any=20= necessary=20allocation=0A=20=20=20=20and=20initialization=20explicit.=20=20= */=0A=20=0A@@=20-1821,6=20+1993,18=20@@=20gimplify_decl_expr=20(tree=20= *stmt_p,=20gimple_seq=20*seq_p)=0A=20=09=20=20=20=20=20=20=20as=20they=20= may=20contain=20a=20label=20address.=20=20*/=0A=20=09=20=20=20=20= walk_tree=20(&init,=20force_labels_r,=20NULL,=20NULL);=0A=20=09}=0A+=20=20= =20=20=20=20/*=20When=20there=20is=20no=20explicit=20initializer,=20if=20= the=20user=20requested,=0A+=09=20We=20should=20insert=20an=20artifical=20= initializer=20for=20this=20automatic=0A+=09=20variable=20for=20non=20VLA=20= variables.=20=20VLA=20variables=20are=20handled=0A+=09=20in=20= gimplify_vla_decl=20differently.=20=20*/=0A+=20=20=20=20=20=20else=20if=20= (flag_trivial_auto_var_init=20>=20AUTO_INIT_UNINITIALIZED=0A+=09=20=20=20= =20=20=20=20&&=20!lookup_attribute=20("uninitialized",=20DECL_ATTRIBUTES=20= (decl))=0A+=09=20=20=20=20=20=20=20&&=20!TREE_STATIC=20(decl)=0A+=09=20=20= =20=20=20=20=20&&=20!is_vla)=0A+=09gimple_add_init_for_auto_var=20(decl,=0A= +=09=09=09=09=20=20=20=20=20=20flag_trivial_auto_var_init,=0A+=09=09=09=09= =20=20=20=20=20=20flag_auto_init_approach,=0A+=09=09=09=09=20=20=20=20=20= =20seq_p);=0A=20=20=20=20=20}=0A=20=0A=20=20=20return=20GS_ALL_DONE;=0A= @@=20-5001,6=20+5185,17=20@@=20gimplify_init_constructor=20(tree=20= *expr_p,=20gimple_seq=20*pre_p,=20gimple_seq=20*post_p,=0A=20=09=20=20/*=20= If=20a=20single=20access=20to=20the=20target=20must=20be=20ensured=20and=20= all=20elements=0A=20=09=20=20=20=20=20are=20zero,=20then=20it's=20= optimal=20to=20clear=20whatever=20their=20number.=20=20*/=0A=20=09=20=20= cleared=20=3D=20true;=0A+=09else=20if=20(flag_trivial_auto_var_init=20>=20= AUTO_INIT_UNINITIALIZED=0A+=09=09=20&&=20!TREE_STATIC=20(object)=0A+=09=09= =20&&=20type_has_padding=20(type))=0A+=09=20=20/*=20If=20the=20user=20= requests=20to=20initialize=20automatic=20variables=20with=0A+=09=20=20=20= =20=20paddings=20inside=20the=20type,=20we=20should=20initialize=20the=20= paddings=20too.=0A+=09=20=20=20=20=20C=20guarantees=20that=20brace-init=20= with=20fewer=20initializers=20than=20members=0A+=09=20=20=20=20=20= aggregate=20will=20initialize=20the=20rest=20of=20the=20aggregate=20= as-if=20it=20were=0A+=09=20=20=20=20=20static=20initialization.=20=20In=20= turn=20static=20initialization=20guarantees=0A+=09=20=20=20=20=20that=20= pad=20is=20initialized=20to=20zero=20bits.=0A+=09=20=20=20=20=20So,=20= it's=20better=20to=20clear=20the=20whole=20record=20under=20such=20= situation.=20=20*/=0A+=09=20=20cleared=20=3D=20true;=0A=20=09else=0A=20=09= =20=20cleared=20=3D=20false;=0A=20=0Adiff=20--git=20a/gcc/internal-fn.c=20= b/gcc/internal-fn.c=0Aindex=2041223ff7d82b..28d23e923b3c=20100644=0A---=20= a/gcc/internal-fn.c=0A+++=20b/gcc/internal-fn.c=0A@@=20-2971,6=20= +2971,30=20@@=20expand_UNIQUE=20(internal_fn,=20gcall=20*stmt)=0A=20=20=20= =20=20emit_insn=20(pattern);=0A=20}=0A=20=0A+/*=20Expand=20the=20= IFN_DEFERRED_INIT=20function=20according=20to=20its=20second=20argument.=20= =20*/=0A+static=20void=0A+expand_DEFERRED_INIT=20(internal_fn,=20gcall=20= *stmt)=0A+{=0A+=20=20tree=20var=20=3D=20gimple_call_lhs=20(stmt);=0A+=20=20= tree=20init=20=3D=20NULL_TREE;=0A+=20=20enum=20auto_init_type=20= init_type=0A+=20=20=20=20=3D=20(enum=20auto_init_type)=20= TREE_INT_CST_LOW=20(gimple_call_arg=20(stmt,=201));=0A+=0A+=20=20switch=20= (init_type)=0A+=20=20=20=20{=0A+=20=20=20=20default:=0A+=20=20=20=20=20=20= gcc_unreachable=20();=0A+=20=20=20=20case=20AUTO_INIT_PATTERN:=0A+=20=20=20= =20=20=20init=20=3D=20build_pattern_cst_for_auto_init=20(TREE_TYPE=20= (var));=0A+=20=20=20=20=20=20expand_assignment=20(var,=20init,=20false);=0A= +=20=20=20=20=20=20break;=0A+=20=20=20=20case=20AUTO_INIT_ZERO:=0A+=20=20= =20=20=20=20init=20=3D=20build_zero_cst=20(TREE_TYPE=20(var));=0A+=20=20=20= =20=20=20expand_assignment=20(var,=20init,=20false);=0A+=20=20=20=20=20=20= break;=0A+=20=20=20=20}=0A+}=0A+=0A=20/*=20The=20size=20of=20an=20= OpenACC=20compute=20dimension.=20=20*/=0A=20=0A=20static=20void=0Adiff=20= --git=20a/gcc/internal-fn.def=20b/gcc/internal-fn.def=0Aindex=20= 91a7bfea3eec..77e4fd69312e=20100644=0A---=20a/gcc/internal-fn.def=0A+++=20= b/gcc/internal-fn.def=0A@@=20-347,6=20+347,11=20@@=20DEF_INTERNAL_FN=20= (VEC_CONVERT,=20ECF_CONST=20|=20ECF_LEAF=20|=20ECF_NOTHROW,=20NULL)=0A=20= DEF_INTERNAL_FN=20(UNIQUE,=20ECF_NOTHROW,=20NULL)=0A=20DEF_INTERNAL_FN=20= (PHI,=200,=20NULL)=0A=20=0A+/*=20A=20function=20to=20represent=20an=20= artifical=20initialization=20to=20an=20uninitialized=0A+=20=20=20= automatic=20variable.=20=20The=20first=20argument=20is=20the=20variable=20= itself,=20the=0A+=20=20=20second=20argument=20is=20the=20initialization=20= type.=20=20*/=0A+DEF_INTERNAL_FN=20(DEFERRED_INIT,=20ECF_CONST=20|=20= ECF_LEAF=20|=20ECF_NOTHROW,=20NULL)=0A+=0A=20/*=20DIM_SIZE=20and=20= DIM_POS=20return=20the=20size=20of=20a=20particular=20compute=0A=20=20=20= =20dimension=20and=20the=20executing=20thread's=20position=20within=20= that=0A=20=20=20=20dimension.=20=20DIM_POS=20is=20pure=20(and=20not=20= const)=20so=20that=20it=20isn't=0Adiff=20--git=20= a/gcc/testsuite/c-c++-common/auto-init-1.c=20= b/gcc/testsuite/c-c++-common/auto-init-1.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..a29b18e2a6f0=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-1.c=0A@@=20-0,0=20+1,39=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20integer=20and=20pointer=20= type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20= */=0A+/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dzero=20= -fdump-tree-gimple"=20}=20*/=0A+=0A+#ifndef=20__cplusplus=0A+#=20define=20= bool=20_Bool=0A+#endif=0A+=0A+enum=20E=20{=0A+=20=20N1=20=3D=200,=0A+=20=20= N2,=0A+=20=20N3=0A+};=0A+=0A+extern=20void=20bar=20(char,=20short,=20= int,=20enum=20E,=20long,=20long=20long,=20int=20*,=20bool);=0A+=0A+void=20= foo()=0A+{=0A+=20=20char=20temp1;=0A+=20=20short=20temp2;=0A+=20=20int=20= temp3;=0A+=20=20enum=20E=20temp4;=0A+=20=20long=20temp5;=0A+=20=20long=20= long=20temp6;=0A+=20=20int=20*temp7;=0A+=20=20bool=20temp8;=0A+=0A+=20=20= bar=20(temp1,=20temp2,=20temp3,=20temp4,=20temp5,=20temp6,=20temp7,=20= temp8);=0A+=20=20return;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp1=20=3D=20.DEFERRED_INIT=20\\(temp1,=202\\)"=20= "gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp2=20= =3D=20.DEFERRED_INIT=20\\(temp2,=202\\)"=20"gimple"=20}=20}=20*/=0A+/*=20= {=20dg-final=20{=20scan-tree-dump=20"temp3=20=3D=20.DEFERRED_INIT=20= \\(temp3,=202\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp4=20=3D=20.DEFERRED_INIT=20\\(temp4,=202\\)"=20= "gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp5=20= =3D=20.DEFERRED_INIT=20\\(temp5,=202\\)"=20"gimple"=20}=20}=20*/=0A+/*=20= {=20dg-final=20{=20scan-tree-dump=20"temp6=20=3D=20.DEFERRED_INIT=20= \\(temp6,=202\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp7=20=3D=20.DEFERRED_INIT=20\\(temp7,=202\\)"=20= "gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp8=20= =3D=20.DEFERRED_INIT=20\\(temp8,=202\\)"=20"gimple"=20}=20}=20*/=0Adiff=20= --git=20a/gcc/testsuite/c-c++-common/auto-init-10.c=20= b/gcc/testsuite/c-c++-common/auto-init-10.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..095588931658=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-10.c=0A@@=20-0,0=20+1,17=20@@=0A= +/*=20Verify=20the=20variable=20attribute=20"uninitialized".=20=20*/=20=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern=20-fdump-tree-gimple"=20}=20*/=0A+=0A= +extern=20void=20bar=20(char,=20long=20long=20*)=20__attribute__=20= ((uninitialized));=20/*=20{=20dg-warning=20"'uninitialized'=20attribute=20= ignored"=20}=20*/=0A+=0A+void=20foo()=0A+{=0A+=20=20short=20temp1;=0A+=20= =20long=20long=20__attribute__=20((uninitialized))=20temp2[10];=0A+=0A+=20= =20bar=20(temp1,=20temp2);=0A+=20=20return;=0A+}=0A+=0A+/*=20{=20= dg-final=20{=20scan-tree-dump=20"temp1=20=3D=20.DEFERRED_INIT=20= \\(temp1,=201\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-tree-dump-not=20"temp2=20=3D=20.DEFERRED_INIT=20\\(temp2,=201\\)"=20= "gimple"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/c-c++-common/auto-init-11.c=20= b/gcc/testsuite/c-c++-common/auto-init-11.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..12d9ed682f0f=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-11.c=0A@@=20-0,0=20+1,14=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20VLA=20automatic=20= variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-ftrivial-auto-var-init=3Dzero=20-fdump-tree-gimple"=20}=20= */=0A+=0A+extern=20void=20bar=20(int);=0A+=0A+void=20foo(int=20n)=0A+{=0A= +=20=20int=20arr[n];=0A+=20=20bar=20(arr[2]);=0A+=20=20return;=0A+}=0A+=0A= +/*=20{=20dg-final=20{=20scan-tree-dump=20"__builtin_memset"=20"gimple"=20= }=20}=20*/=0Adiff=20--git=20a/gcc/testsuite/c-c++-common/auto-init-12.c=20= b/gcc/testsuite/c-c++-common/auto-init-12.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..189f6506dbcf=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-12.c=0A@@=20-0,0=20+1,14=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20VLA=20automatic=20= variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-ftrivial-auto-var-init=3Dpattern=20-fdump-tree-gimple"=20= }=20*/=0A+=0A+extern=20void=20bar=20(int);=0A+=0A+void=20foo(int=20n)=0A= +{=0A+=20=20int=20arr[n];=0A+=20=20bar=20(arr[2]);=0A+=20=20return;=0A+}=0A= +=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"__builtin_memcpy"=20= "gimple"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/c-c++-common/auto-init-13.c=20= b/gcc/testsuite/c-c++-common/auto-init-13.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..177659ce89e3=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-13.c=0A@@=20-0,0=20+1,23=20@@=0A= +/*=20Verify=20the=20auto=20initialization=20of=20structure=20or=20union=20= with=20a=20flexible=20array=0A+=20=20=20member.=20=20*/=20=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern=20-fdump-tree-gimple"=20}=20*/=0A+=0A= +struct=20a=20{=0A+=20=20int=20b;=0A+=20=20int=20array[];=0A+};=0A+union=20= tar=20{=0A+=20=20struct=20a=20bar;=0A+=20=20char=20buf;=0A+};=0A+=0A+int=20= foo()=0A+{=0A+=20=20struct=20a=20d;=0A+=20=20union=20tar=20var;=0A+=20=20= return=20d.b=20+=20var.bar.b;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"d=20=3D=20.DEFERRED_INIT=20\\(d,=201\\)"=20"gimple"=20= }=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"var=20=3D=20= .DEFERRED_INIT=20\\(var,=201\\)"=20"gimple"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/c-c++-common/auto-init-14.c=20= b/gcc/testsuite/c-c++-common/auto-init-14.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..59d0503b854f=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-14.c=0A@@=20-0,0=20+1,23=20@@=0A= +/*=20Verify=20the=20auto=20initialization=20of=20structure=20or=20union=20= with=20a=20flexible=20array=0A+=20=20=20member.=20=20*/=20=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero=20-fdump-tree-gimple"=20}=20*/=0A+=0A= +struct=20a=20{=0A+=20=20int=20b;=0A+=20=20int=20array[];=0A+};=0A+union=20= tar=20{=0A+=20=20struct=20a=20bar;=0A+=20=20char=20buf;=0A+};=0A+=0A+int=20= foo()=0A+{=0A+=20=20struct=20a=20d;=0A+=20=20union=20tar=20var;=0A+=20=20= return=20d.b=20+=20var.bar.b;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"d=20=3D=20.DEFERRED_INIT=20\\(d,=202\\)"=20"gimple"=20= }=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"var=20=3D=20= .DEFERRED_INIT=20\\(var,=202\\)"=20"gimple"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/c-c++-common/auto-init-15.c=20= b/gcc/testsuite/c-c++-common/auto-init-15.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..6f12f96ac1e2=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-15.c=0A@@=20-0,0=20+1,13=20@@=0A= +/*=20Verify=20the=20auto=20initialization=20of=20nested=20VLA.=20=20*/=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero=20-fdump-tree-gimple"=20}=20*/=0A+=0A= +void=20g(void=20*);=0A+=0A+void=20foo(int=20a)=0A+{=0A+=20=20int=20= x[a][a];=0A+=20=20g(x);=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"__builtin_memset"=20"gimple"=20}=20}=20*/=0Adiff=20= --git=20a/gcc/testsuite/c-c++-common/auto-init-16.c=20= b/gcc/testsuite/c-c++-common/auto-init-16.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..c6a3627da542=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-16.c=0A@@=20-0,0=20+1,13=20@@=0A= +/*=20Verify=20the=20auto=20initialization=20of=20nested=20VLA.=20=20*/=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern=20-fdump-tree-gimple"=20}=20*/=0A+=0A= +void=20g(void=20*);=0A+=0A+void=20foo(int=20a)=0A+{=0A+=20=20int=20= x[a][a];=0A+=20=20g(x);=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"__builtin_memcpy"=20"gimple"=20}=20}=20*/=0Adiff=20= --git=20a/gcc/testsuite/c-c++-common/auto-init-2.c=20= b/gcc/testsuite/c-c++-common/auto-init-2.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..07c2f38b673b=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-2.c=0A@@=20-0,0=20+1,39=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20integer=20and=20pointer=20= type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20= */=0A+/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dpattern=20= -fdump-tree-gimple"=20}=20*/=0A+=0A+#ifndef=20__cplusplus=0A+#=20define=20= bool=20_Bool=0A+#endif=0A+=0A+enum=20E=20{=0A+=20=20N1=20=3D=200,=0A+=20=20= N2,=0A+=20=20N3=0A+};=0A+=0A+extern=20void=20bar=20(char,=20short,=20= int,=20enum=20E,=20long,=20long=20long,=20int=20*,=20bool);=0A+=0A+void=20= foo()=0A+{=0A+=20=20char=20temp1;=0A+=20=20short=20temp2;=0A+=20=20int=20= temp3;=0A+=20=20enum=20E=20temp4;=0A+=20=20long=20temp5;=0A+=20=20long=20= long=20temp6;=0A+=20=20int=20*temp7;=0A+=20=20bool=20temp8;=0A+=0A+=20=20= bar=20(temp1,=20temp2,=20temp3,=20temp4,=20temp5,=20temp6,=20temp7,=20= temp8);=0A+=20=20return;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp1=20=3D=20.DEFERRED_INIT=20\\(temp1,=201\\)"=20= "gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp2=20= =3D=20.DEFERRED_INIT=20\\(temp2,=201\\)"=20"gimple"=20}=20}=20*/=0A+/*=20= {=20dg-final=20{=20scan-tree-dump=20"temp3=20=3D=20.DEFERRED_INIT=20= \\(temp3,=201\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp4=20=3D=20.DEFERRED_INIT=20\\(temp4,=201\\)"=20= "gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp5=20= =3D=20.DEFERRED_INIT=20\\(temp5,=201\\)"=20"gimple"=20}=20}=20*/=0A+/*=20= {=20dg-final=20{=20scan-tree-dump=20"temp6=20=3D=20.DEFERRED_INIT=20= \\(temp6,=201\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp7=20=3D=20.DEFERRED_INIT=20\\(temp7,=201\\)"=20= "gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp8=20= =3D=20.DEFERRED_INIT=20\\(temp8,=201\\)"=20"gimple"=20}=20}=20*/=0Adiff=20= --git=20a/gcc/testsuite/c-c++-common/auto-init-3.c=20= b/gcc/testsuite/c-c++-common/auto-init-3.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..c6b301d9a0ce=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-3.c=0A@@=20-0,0=20+1,19=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20floating=20point=20type=20= automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A= +/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dzero=20= -fdump-tree-gimple"=20}=20*/=0A+=0A+long=20double=20result;=0A+=0A+long=20= double=20foo()=0A+{=0A+=20=20float=20temp1;=0A+=20=20double=20temp2;=0A+=20= =20long=20double=20temp3;=0A+=20=20=0A+=20=20result=20=3D=20temp1=20+=20= temp2=20+=20temp3;=0A+=20=20return=20result;=0A+}=0A+=0A+/*=20{=20= dg-final=20{=20scan-tree-dump=20"temp1=20=3D=20.DEFERRED_INIT=20= \\(temp1,=202\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp2=20=3D=20.DEFERRED_INIT=20\\(temp2,=202\\)"=20= "gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp3=20= =3D=20.DEFERRED_INIT=20\\(temp3,=202\\)"=20"gimple"=20}=20}=20*/=0Adiff=20= --git=20a/gcc/testsuite/c-c++-common/auto-init-4.c=20= b/gcc/testsuite/c-c++-common/auto-init-4.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..db23469f2412=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-4.c=0A@@=20-0,0=20+1,19=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20floating=20point=20type=20= automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A= +/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dpattern=20= -fdump-tree-gimple"=20}=20*/=0A+=0A+long=20double=20result;=0A+=0A+long=20= double=20foo()=0A+{=0A+=20=20float=20temp1;=0A+=20=20double=20temp2;=0A+=20= =20long=20double=20temp3;=0A+=20=20=0A+=20=20result=20=3D=20temp1=20+=20= temp2=20+=20temp3;=0A+=20=20return=20result;=0A+}=0A+=0A+/*=20{=20= dg-final=20{=20scan-tree-dump=20"temp1=20=3D=20.DEFERRED_INIT=20= \\(temp1,=201\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp2=20=3D=20.DEFERRED_INIT=20\\(temp2,=201\\)"=20= "gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp3=20= =3D=20.DEFERRED_INIT=20\\(temp3,=201\\)"=20"gimple"=20}=20}=20*/=0Adiff=20= --git=20a/gcc/testsuite/c-c++-common/auto-init-5.c=20= b/gcc/testsuite/c-c++-common/auto-init-5.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..596b066196f6=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-5.c=0A@@=20-0,0=20+1,21=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20complex=20type=20automatic=20= variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-ftrivial-auto-var-init=3Dzero=20-fdump-tree-gimple"=20}=20= */=0A+=0A+=0A+_Complex=20long=20double=20result;=0A+=0A+_Complex=20long=20= double=20foo()=0A+{=0A+=20=20_Complex=20float=20temp1;=0A+=20=20_Complex=20= double=20temp2;=0A+=20=20_Complex=20long=20double=20temp3;=0A+=0A+=20=20= result=20=3D=20temp1=20+=20temp2=20+=20temp3;=0A+=20=20return=20result;=0A= +}=0A+=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp1=20=3D=20= .DEFERRED_INIT=20\\(temp1,=202\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20= dg-final=20{=20scan-tree-dump=20"temp2=20=3D=20.DEFERRED_INIT=20= \\(temp2,=202\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp3=20=3D=20.DEFERRED_INIT=20\\(temp3,=202\\)"=20= "gimple"=20}=20}=20*/=0A+=0Adiff=20--git=20= a/gcc/testsuite/c-c++-common/auto-init-6.c=20= b/gcc/testsuite/c-c++-common/auto-init-6.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..725d80acdcc0=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-6.c=0A@@=20-0,0=20+1,21=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20complex=20type=20= automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A= +/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dpattern=20= -fdump-tree-gimple"=20}=20*/=0A+=0A+=0A+_Complex=20long=20double=20= result;=0A+=0A+_Complex=20long=20double=20foo()=0A+{=0A+=20=20_Complex=20= float=20temp1;=0A+=20=20_Complex=20double=20temp2;=0A+=20=20_Complex=20= long=20double=20temp3;=0A+=0A+=20=20result=20=3D=20temp1=20+=20temp2=20+=20= temp3;=0A+=20=20return=20result;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp1=20=3D=20.DEFERRED_INIT=20\\(temp1,=201\\)"=20= "gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp2=20= =3D=20.DEFERRED_INIT=20\\(temp2,=201\\)"=20"gimple"=20}=20}=20*/=0A+/*=20= {=20dg-final=20{=20scan-tree-dump=20"temp3=20=3D=20.DEFERRED_INIT=20= \\(temp3,=201\\)"=20"gimple"=20}=20}=20*/=0A+=0Adiff=20--git=20= a/gcc/testsuite/c-c++-common/auto-init-7.c=20= b/gcc/testsuite/c-c++-common/auto-init-7.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..9fd2edc6b642=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-7.c=0A@@=20-0,0=20+1,35=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20array,=20union,=20and=20= structure=20type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20= compile=20}=20*/=0A+/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dzero=20= -fdump-tree-gimple"=20}=20*/=0A+=0A+struct=20S=0A+{=0A+=20=20int=20f1;=0A= +=20=20float=20f2;=0A+=20=20char=20f3[20];=0A+};=0A+=0A+union=20U=0A+{=0A= +=20=20char=20u1[5];=0A+=20=20int=20u2;=0A+=20=20float=20u3;=20=0A+};=0A= +=0A+double=20result;=0A+=0A+double=20foo()=0A+{=0A+=20=20int=20= temp1[3];=0A+=20=20double=20temp2[3];=0A+=20=20struct=20S=20temp3;=0A+=20= =20union=20U=20temp4;=0A+=20=20=0A+=20=20result=20=3D=20temp1[2]=20+=20= temp2[1]=20+=20temp3.f2=20+=20temp4.u3;=0A+=20=20return=20result;=0A+}=0A= +=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp1=20=3D=20= .DEFERRED_INIT=20\\(temp1,=202\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20= dg-final=20{=20scan-tree-dump=20"temp2=20=3D=20.DEFERRED_INIT=20= \\(temp2,=202\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp3=20=3D=20.DEFERRED_INIT=20\\(temp3,=202\\)"=20= "gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp4=20= =3D=20.DEFERRED_INIT=20\\(temp4,=202\\)"=20"gimple"=20}=20}=20*/=0Adiff=20= --git=20a/gcc/testsuite/c-c++-common/auto-init-8.c=20= b/gcc/testsuite/c-c++-common/auto-init-8.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..06dfc9709c40=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-8.c=0A@@=20-0,0=20+1,35=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20array,=20union,=20and=20= structure=20type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20= compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern=20-fdump-tree-gimple"=20}=20*/=0A+=0A= +struct=20S=0A+{=0A+=20=20int=20f1;=0A+=20=20float=20f2;=0A+=20=20char=20= f3[20];=0A+};=0A+=0A+union=20U=0A+{=0A+=20=20char=20u1[5];=0A+=20=20int=20= u2;=0A+=20=20float=20u3;=20=0A+};=0A+=0A+double=20result;=0A+=0A+double=20= foo()=0A+{=0A+=20=20int=20temp1[3];=0A+=20=20double=20temp2[3];=0A+=20=20= struct=20S=20temp3;=0A+=20=20union=20U=20temp4;=0A+=20=20=0A+=20=20= result=20=3D=20temp1[2]=20+=20temp2[1]=20+=20temp3.f2=20+=20temp4.u3;=0A= +=20=20return=20result;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp1=20=3D=20.DEFERRED_INIT=20\\(temp1,=201\\)"=20= "gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump=20"temp2=20= =3D=20.DEFERRED_INIT=20\\(temp2,=201\\)"=20"gimple"=20}=20}=20*/=0A+/*=20= {=20dg-final=20{=20scan-tree-dump=20"temp3=20=3D=20.DEFERRED_INIT=20= \\(temp3,=201\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-tree-dump=20"temp4=20=3D=20.DEFERRED_INIT=20\\(temp4,=201\\)"=20= "gimple"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/c-c++-common/auto-init-9.c=20= b/gcc/testsuite/c-c++-common/auto-init-9.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..32dd342c2454=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-9.c=0A@@=20-0,0=20+1,17=20@@=0A= +/*=20Verify=20the=20variable=20attribute=20"uninitialized".=20=20*/=20=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero=20-fdump-tree-gimple"=20}=20*/=0A+=0A= +extern=20void=20bar=20(char,=20long=20long=20*)=20__attribute__=20= ((uninitialized));=20/*=20{=20dg-warning=20"'uninitialized'=20attribute=20= ignored"=20}=20*/=0A+=0A+void=20foo()=0A+{=0A+=20=20short=20temp1;=0A+=20= =20long=20long=20__attribute__=20((uninitialized))=20temp2[10];=0A+=0A+=20= =20bar=20(temp1,=20temp2);=0A+=20=20return;=0A+}=0A+=0A+/*=20{=20= dg-final=20{=20scan-tree-dump=20"temp1=20=3D=20.DEFERRED_INIT=20= \\(temp1,=202\\)"=20"gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-tree-dump-not=20"temp2=20=3D=20.DEFERRED_INIT=20\\(temp2,=202\\)"=20= "gimple"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/c-c++-common/auto-init-esra.c=20= b/gcc/testsuite/c-c++-common/auto-init-esra.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..b204374f02cd=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/c-c++-common/auto-init-esra.c=0A@@=20-0,0=20+1,35=20@@=0A= +/*=20Verify=20the=20strength=20reduction=20adjustment=20for=20= -ftrivial-auto-var-init.=20=20*/=20=0A+/*=20{=20dg-do=20compile=20}=20*/=0A= +/*=20{=20dg-options=20"-O2=20-ftrivial-auto-var-init=3Dzero=20= -fauto-var-init-approach=3DD=20-fdump-tree-gimple=20-fdump-tree-esra"=20= }=20*/=0A+=0A+=0A+typedef=20double=20VECTOR[3];=0A+=0A+enum=0A+{=0A+=20X=20= =3D=200,=0A+=20Y=20=3D=201,=0A+=20Z=20=3D=202,=0A+=20T=20=3D=203=0A+};=0A= +=0A+void=20Assign_Vector(VECTOR=20d,=20VECTOR=20s)=0A+{=0A+=20d[X]=20=3D=20= s[X];=0A+=20d[Y]=20=3D=20s[Y];=0A+=20d[Z]=20=3D=20s[Z];=0A+}=0A+=0A+void=20= VCross(VECTOR=20a,=20const=20VECTOR=20b,=20const=20VECTOR=20c)=0A+{=0A+=20= VECTOR=20tmp;=0A+=0A+=20tmp[X]=20=3D=20b[Y]=20*=20c[Z]=20-=20b[Z]=20*=20= c[Y];=0A+=20tmp[Y]=20=3D=20b[Z]=20*=20c[X]=20-=20b[X]=20*=20c[Z];=0A+=20= tmp[Z]=20=3D=20b[X]=20*=20c[Y]=20-=20b[Y]=20*=20c[X];=0A+=0A+=20= Assign_Vector(a,=20tmp);=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-tree-dump-times=20"tmp=20=3D=20.DEFERRED_INIT=20\\(tmp,=202\\)"=201=20= "gimple"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-tree-dump-times=20= ".DEFERRED_INIT=20\\(tmp"=203=20"esra"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/g++.dg/auto-init-uninit-pred-1_a.C=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-1_a.C=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..33c17441384f=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-1_a.C=0A@@=20-0,0=20+1,63=20= @@=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-Wuninitialized=20-O2=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +typedef=20long=20long=20int64;=0A+void=20incr=20();=0A+bool=20is_valid=20= (int);=0A+int=20=20get_time=20();=0A+=0A+class=20A=20=0A+{=0A+public:=0A= +=20=20A=20();=0A+=20=20~A=20()=20{=0A+=20=20=20=20if=20(I)=20delete=20= I;=0A+=20=20}=0A+=0A+private:=0A+=20=20int*=20I;=0A+};=0A+=0A+bool=20= get_url=20(A=20*);=0A+=0A+class=20M=20{=0A+=0A+=20public:=0A= +__attribute__=20((always_inline))=20=20int=20GetC=20(int=20*c)=20=20{=0A= +=0A+=20=20=20=20A=20details_str;=0A+=20=20=20=20if=20(!get_url=20= (&details_str))=0A+=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20incr=20= ();=0A+=20=20=20=20=20=20=20=20return=201;=0A+=20=20=20=20=20=20}=0A+=0A= +=20=20=20=20*c=20=3D=20get_time=20();=0A+=20=20=20=20return=20-1;=0A+=20= =20}=0A+=0A+=20=20void=20do_sth();=0A+=20=20void=20do_sth2();=0A+=20=20=20= =0A+=20=20void=20P=20(int64=20t)=0A+=20=20=20=20{=0A+=20=20=20=20=20=20= int=20cc;=20/*=20{=20dg-bogus=20"uninitialized"=20"uninitialized=20= variable=20warning"=20}=20=20*/=20=0A+=20=20=20=20=20=20if=20(GetC=20= (&cc)=20>=3D=200=20)=0A+=20=20=20=20=20=20=20=20return;=0A+=20=20=20=20=20= =20=0A+=20=20=20=20=20=20if=20(t=20&&=20cc=20<=3D=200=20)=20=20/*=20{=20= dg-bogus=20"uninitialized"=20"uninitialized=20variable=20warning"=20}=20= */=0A+=20=20=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20=20=20= this->do_sth();=0A+=20=20=20=20=20=20=20=20=20=20return;=0A+=20=20=20=20=20= =20=20=20}=0A+=0A+=20=20=20=20do_sth2();=0A+=20=20}=0A+};=0A+=0A+M*=20m;=20= =0A+void=20foo(int=20x)=0A+{=0A+=20=20m=20=3D=20new=20M;=0A+=20=20= m->P(x);=0A+}=0Adiff=20--git=20= a/gcc/testsuite/g++.dg/auto-init-uninit-pred-1_b.C=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-1_b.C=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..6b6bdaed71e0=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-1_b.C=0A@@=20-0,0=20+1,63=20= @@=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-Wuninitialized=20-O2=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +typedef=20long=20long=20int64;=0A+void=20incr=20();=0A+bool=20is_valid=20= (int);=0A+int=20=20get_time=20();=0A+=0A+class=20A=20=0A+{=0A+public:=0A= +=20=20A=20();=0A+=20=20~A=20()=20{=0A+=20=20=20=20if=20(I)=20delete=20= I;=0A+=20=20}=0A+=0A+private:=0A+=20=20int*=20I;=0A+};=0A+=0A+bool=20= get_url=20(A=20*);=0A+=0A+class=20M=20{=0A+=0A+=20public:=0A= +__attribute__=20((always_inline))=20=20int=20GetC=20(int=20*c)=20=20{=0A= +=0A+=20=20=20=20A=20details_str;=0A+=20=20=20=20if=20(!get_url=20= (&details_str))=0A+=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20incr=20= ();=0A+=20=20=20=20=20=20=20=20return=201;=0A+=20=20=20=20=20=20}=0A+=0A= +=20=20=20=20*c=20=3D=20get_time=20();=0A+=20=20=20=20return=20-1;=0A+=20= =20}=0A+=0A+=20=20void=20do_sth();=0A+=20=20void=20do_sth2();=0A+=20=20=20= =0A+=20=20void=20P=20(int64=20t)=0A+=20=20=20=20{=0A+=20=20=20=20=20=20= int=20cc;=20/*=20{=20dg-message=20"note:=20'cc'=20was=20declared=20here"=20= }=20*/=0A+=20=20=20=20=20=20if=20(GetC=20(&cc)=20<=3D=200=20)=20/*=20= return=20flag=20checked=20wrongly=20*/=0A+=20=20=20=20=20=20=20=20= return;=0A+=20=20=20=20=20=20=0A+=20=20=20=20=20=20if=20(t=20&&=20cc=20= <=3D=200=20)=20=20/*=20{=20dg-warning=20"uninitialized"=20"uninitialized=20= variable=20warning"=20}=20*/=0A+=20=20=20=20=20=20=20=20{=0A+=20=20=20=20= =20=20=20=20=20=20this->do_sth();=0A+=20=20=20=20=20=20=20=20=20=20= return;=0A+=20=20=20=20=20=20=20=20}=0A+=0A+=20=20=20=20do_sth2();=0A+=20= =20}=0A+};=0A+=0A+M*=20m;=20=0A+void=20foo(int=20x)=0A+{=0A+=20=20m=20=3D=20= new=20M;=0A+=20=20m->P(x);=0A+}=0Adiff=20--git=20= a/gcc/testsuite/g++.dg/auto-init-uninit-pred-2_a.C=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-2_a.C=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..fc18cb1e7c91=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-2_a.C=0A@@=20-0,0=20+1,62=20= @@=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-Wuninitialized=20-O2=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +typedef=20long=20long=20int64;=0A+void=20incr=20();=0A+bool=20is_valid=20= (int);=0A+int=20=20get_time=20();=0A+=0A+class=20A=20=0A+{=0A+public:=0A= +=20=20A=20();=0A+=20=20~A=20()=20{=0A+=20=20=20=20if=20(I)=20delete=20= I;=0A+=20=20}=0A+=0A+private:=0A+=20=20int*=20I;=0A+};=0A+=0A+bool=20= get_url=20(A=20*);=0A+=0A+class=20M=20{=0A+=0A+=20public:=0A= +__attribute__=20((always_inline))=20=20bool=20GetC=20(int=20*c)=20=20{=0A= +=0A+=20=20=20=20A=20details_str;=0A+=20=20=20=20if=20(get_url=20= (&details_str))=0A+=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20*c=20=3D= =20get_time=20();=0A+=20=20=20=20=20=20=20=20return=20true;=0A+=20=20=20=20= =20=20}=0A+=0A+=20=20=20=20return=20false;=0A+=20=20}=0A+=0A+=20=20void=20= do_sth();=0A+=20=20void=20do_sth2();=0A+=20=20=20=0A+=20=20void=20P=20= (int64=20t)=0A+=20=20=20=20{=0A+=20=20=20=20=20=20int=20cc;=20=0A+=20=20=20= =20=20=20if=20(!GetC=20(&cc))=20/*=20return=20flag=20checked=20properly=20= */=0A+=20=20=20=20=20=20=20=20return;=0A+=20=20=20=20=20=20=0A+=20=20=20=20= =20=20if=20(cc=20<=3D=200)=20=20/*=20{=20dg-bogus=20"uninitialized"=20= "uninitialized=20variable=20warning"=20}=20*/=0A+=20=20=20=20=20=20=20=20= {=0A+=20=20=20=20=20=20=20=20=20=20this->do_sth();=0A+=20=20=20=20=20=20=20= =20=20=20return;=0A+=20=20=20=20=20=20=20=20}=0A+=0A+=20=20=20=20= do_sth2();=0A+=20=20}=0A+};=0A+=0A+M*=20m;=20=0A+void=20foo(int=20x)=0A= +{=0A+=20=20m=20=3D=20new=20M;=0A+=20=20m->P(x);=0A+}=0Adiff=20--git=20= a/gcc/testsuite/g++.dg/auto-init-uninit-pred-2_b.C=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-2_b.C=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..e85a36f16fff=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-2_b.C=0A@@=20-0,0=20+1,62=20= @@=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-Wuninitialized=20-O2=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +typedef=20long=20long=20int64;=0A+void=20incr=20();=0A+bool=20is_valid=20= (int);=0A+int=20=20get_time=20();=0A+=0A+class=20A=20=0A+{=0A+public:=0A= +=20=20A=20();=0A+=20=20~A=20()=20{=0A+=20=20=20=20if=20(I)=20delete=20= I;=0A+=20=20}=0A+=0A+private:=0A+=20=20int*=20I;=0A+};=0A+=0A+bool=20= get_url=20(A=20*);=0A+=0A+class=20M=20{=0A+=0A+=20public:=0A= +__attribute__=20((always_inline))=20=20bool=20GetC=20(int=20*c)=20=20{=0A= +=0A+=20=20=20=20A=20details_str;=0A+=20=20=20=20if=20(get_url=20= (&details_str))=0A+=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20*c=20=3D= =20get_time=20();=0A+=20=20=20=20=20=20=20=20return=20true;=0A+=20=20=20=20= =20=20}=0A+=0A+=20=20=20=20return=20false;=0A+=20=20}=0A+=0A+=20=20void=20= do_sth();=0A+=20=20void=20do_sth2();=0A+=20=20=20=0A+=20=20void=20P=20= (int64=20t)=0A+=20=20=20=20{=0A+=20=20=20=20=20=20int=20cc;=20/*=20{=20= dg-message=20"note:=20'cc'=20was=20declared=20here"=20}=20*/=0A+=20=20=20= =20=20=20if=20(GetC=20(&cc))=20/*=20return=20flag=20checked=20wrongly=20= */=0A+=20=20=20=20=20=20=20=20return;=0A+=20=20=20=20=20=20=0A+=20=20=20=20= =20=20if=20(cc=20<=3D=200)=20=20/*=20{=20dg-warning=20"uninitialized"=20= "uninitialized=20variable=20warning"=20}=20*/=0A+=20=20=20=20=20=20=20=20= {=0A+=20=20=20=20=20=20=20=20=20=20this->do_sth();=0A+=20=20=20=20=20=20=20= =20=20=20return;=0A+=20=20=20=20=20=20=20=20}=0A+=0A+=20=20=20=20= do_sth2();=0A+=20=20}=0A+};=0A+=0A+M*=20m;=20=0A+void=20foo(int=20x)=0A= +{=0A+=20=20m=20=3D=20new=20M;=0A+=20=20m->P(x);=0A+}=0Adiff=20--git=20= a/gcc/testsuite/g++.dg/auto-init-uninit-pred-3_a.C=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-3_a.C=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..09ed69215320=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-3_a.C=0A@@=20-0,0=20+1,77=20= @@=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-Wuninitialized=20-O2=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +/*=20Multiple=20initialization=20paths.=20=20*/=0A+=0A+typedef=20long=20= long=20int64;=0A+void=20incr=20();=0A+bool=20is_valid=20(int);=0A+int=20=20= get_time=20();=0A+=0A+class=20A=0A+{=0A+public:=0A+=20=20A=20();=0A+=20=20= ~A=20()=20{=0A+=20=20=20=20if=20(I)=20delete=20I;=0A+=20=20}=0A+=0A= +private:=0A+=20=20int*=20I;=0A+};=0A+=0A+bool=20get_url=20(A=20*);=0A= +bool=20get_url2=20(A=20*);=0A+=0A+class=20M=20{=0A+=0A+=20public:=0A+=20= __attribute__=20((always_inline))=0A+=20bool=20GetC=20(int=20*c)=20=20{=0A= +=0A+=20=20=20=20A=20details_str;=0A+=20=20=20=20/*=20Intialization=20= path=201=20=20*/=0A+=20=20=20=20if=20(get_url=20(&details_str))=0A+=20=20= =20=20=20=20{=0A+=20=20=20=20=20=20=20=20*c=20=3D=20get_time=20();=0A+=20= =20=20=20=20=20=20=20return=20true;=0A+=20=20=20=20=20=20}=0A+=0A+=20=20=20= =20/*=20insert=20dtor=20calls=20(inlined)=20into=20following=20return=20= paths=20=20*/=0A+=20=20=20=20A=20tmp_str;=0A+=0A+=20=20=20=20/*=20= Intializtion=20path=202=20=20*/=0A+=20=20=20=20if=20(get_url2=20= (&details_str))=0A+=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20*c=20=3D= =20get_time=20();=0A+=20=20=20=20=20=20=20=20return=20true;=0A+=20=20=20=20= =20=20}=0A+=0A+=20=20=20=20return=20false;=0A+=20=20}=0A+=0A+=20=20void=20= do_sth();=0A+=20=20void=20do_sth2();=0A+=0A+=20=20void=20P=20(int64=20t)=0A= +=20=20=20=20{=0A+=20=20=20=20=20=20int=20cc;=0A+=20=20=20=20=20=20if=20= (!GetC=20(&cc))=20/*=20return=20flag=20checked=20properly=20*/=0A+=20=20=20= =20=20=20=20=20return;=0A+=0A+=20=20=20=20=20=20if=20(cc=20<=3D=200)=20=20= =20/*=20{=20dg-bogus=20"uninitialized"=20"uninitialized=20variable=20= warning"=20}=20*/=0A+=20=20=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20= =20=20this->do_sth();=0A+=20=20=20=20=20=20=20=20=20=20return;=0A+=20=20=20= =20=20=20=20=20}=0A+=0A+=20=20=20=20do_sth2();=0A+=20=20}=0A+};=0A+=0A= +M*=20m;=0A+void=20test(int=20x)=0A+{=0A+=20=20m=20=3D=20new=20M;=0A+=20=20= m->P(x);=0A+}=0Adiff=20--git=20= a/gcc/testsuite/g++.dg/auto-init-uninit-pred-3_b.C=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-3_b.C=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..8e7b8541725e=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-3_b.C=0A@@=20-0,0=20+1,87=20= @@=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-Wuninitialized=20-O2=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +/*=20Multiple=20initialization=20paths.=20=20*/=0A+=0A+typedef=20long=20= long=20int64;=0A+void=20incr=20();=0A+bool=20is_valid=20(int);=0A+int=20=20= get_time=20();=0A+=0A+class=20A=0A+{=0A+public:=0A+=20=20A=20();=0A+=20=20= ~A=20()=20{=0A+=20=20=20=20if=20(I)=20delete=20I;=0A+=20=20}=0A+=0A= +private:=0A+=20=20int*=20I;=0A+};=0A+=0A+bool=20get_url=20(A=20*);=0A= +bool=20get_url2=20(A=20*);=0A+bool=20get_url3=20(A=20*);=0A+=0A+class=20= M=20{=0A+=0A+=20public:=0A+=20__attribute__=20((always_inline))=0A+=20= bool=20GetC=20(int=20*c)=20=20{=0A+=0A+=20=20=20=20A=20details_str;=0A+=0A= +=20=20=20=20/*=20Initialization=20path=201=20=20*/=0A+=20=20=20=20if=20= (get_url=20(&details_str))=0A+=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20= =20*c=20=3D=20get_time=20();=0A+=20=20=20=20=20=20=20=20return=20true;=0A= +=20=20=20=20=20=20}=0A+=0A+=20=20=20=20/*=20Destructor=20call=20before=20= return*/=0A+=20=20=20=20A=20tmp_str;=0A+=0A+=20=20=20=20/*=20= Initialization=20path=202=20=20*/=0A+=20=20=20=20if=20(get_url2=20= (&details_str))=0A+=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20*c=20=3D= =20get_time=20();=0A+=20=20=20=20=20=20=20=20return=20true;=0A+=20=20=20=20= =20=20}=0A+=0A+=20=20=20=20/*=20Fail=20to=20initialize=20in=20this=20= path=20but=0A+=20=20=20=20=20=20=20still=20returns=20true=20=20*/=0A+=20=20= =20=20if=20(get_url2=20(&details_str))=0A+=20=20=20=20=20=20{=0A+=20=20=20= =20=20=20=20=20/*=20Fail=20to=20initialize=20*c=20=20*/=0A+=20=20=20=20=20= =20=20=20return=20true;=0A+=20=20=20=20=20=20}=0A+=0A+=20=20=20=20return=20= false;=0A+=20=20}=0A+=0A+=20=20void=20do_sth();=0A+=20=20void=20= do_sth2();=0A+=0A+=20=20void=20P=20(int64=20t)=0A+=20=20=20=20{=0A+=20=20= =20=20=20=20int=20cc;=0A+=20=20=20=20=20=20if=20(!GetC=20(&cc))=0A+=20=20= =20=20=20=20=20=20return;=0A+=0A+=20=20=20=20=20=20if=20(cc=20<=3D=200)=20= =20=20/*=20{=20dg-warning=20"uninitialized"=20"uninitialized=20variable=20= warning"=20}=20*/=0A+=20=20=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20= =20=20this->do_sth();=0A+=20=20=20=20=20=20=20=20=20=20return;=0A+=20=20=20= =20=20=20=20=20}=0A+=0A+=20=20=20=20do_sth2();=0A+=20=20}=0A+};=0A+=0A= +M*=20m;=0A+void=20test(int=20x)=0A+{=0A+=20=20m=20=3D=20new=20M;=0A+=20=20= m->P(x);=0A+}=0Adiff=20--git=20= a/gcc/testsuite/g++.dg/auto-init-uninit-pred-4.C=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-4.C=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..c48770ae44dd=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-4.C=0A@@=20-0,0=20+1,16=20= @@=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-Wuninitialized=20-Og=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +int=20pop=20();=0A+int=20pop_first_bucket;=0A+=0A+int=20my_pop=20()=0A= +{=0A+=20=20int=20out;=20=20//=20{=20dg-bogus=20"uninitialized"=20= "uninitialized=20variable=20warning"=20}=0A+=0A+=20=20while=20= (pop_first_bucket)=0A+=20=20=20=20if=20(pop_first_bucket=20&&=20(out=20=3D= =20pop()))=0A+=20=20=20=20=20=20return=20out;=0A+=0A+=20=20return=200;=0A= +}=0Adiff=20--git=20= a/gcc/testsuite/g++.dg/auto-init-uninit-pred-loop-1_a.cc=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-loop-1_a.cc=0Anew=20file=20= mode=20100644=0Aindex=20000000000000..629677a60259=0A---=20/dev/null=0A= +++=20b/gcc/testsuite/g++.dg/auto-init-uninit-pred-loop-1_a.cc=0A@@=20= -0,0=20+1,21=20@@=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-Wuninitialized=20-O2=20-ftrivial-auto-var-init=3Dzero"=20= }=20*/=0A+=0A+extern=20int=20bar();=0A+int=20foo(void)=0A+{=0A+=20for=20= (;;)=20{=0A+=20=20=20int=20err=20=3D=20({int=20_err;=20/*=20=20{=20= dg-bogus=20"uninitialized"=20"false=20warning"=20}=20*/=0A+=20=20=20=20=20= for=20(int=20i=20=3D=200;=20i=20<=2016;=20++i)=20{=0A+=20=20=20=20=20=20=20= _err=20=3D=2017;=0A+=20=20=20=20=20=20=20_err=20=3D=20bar();=0A+=20=20=20= =20=20}=0A+=20=20=20=20=20_err;=20/*=20=20{=20dg-bogus=20"uninitialized"=20= "false=20warning"=20}=20*/=0A+=20=20=20});=0A+=0A+=20=20=20if=20(err=20= =3D=3D=200)=20return=2017;=20=0A+=20}=0A+=0A+=20return=2018;=0A+}=0A+=0A= diff=20--git=20a/gcc/testsuite/g++.dg/auto-init-uninit-pred-loop-1_b.cc=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-loop-1_b.cc=0Anew=20file=20= mode=20100644=0Aindex=20000000000000..04ab364ac83e=0A---=20/dev/null=0A= +++=20b/gcc/testsuite/g++.dg/auto-init-uninit-pred-loop-1_b.cc=0A@@=20= -0,0=20+1,21=20@@=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-Wuninitialized=20-O2=20-ftrivial-auto-var-init=3Dzero"=20= }=20*/=0A+=0A+extern=20int=20bar();=0A+int=20foo(int=20n)=0A+{=0A+=20for=20= (;;)=20{=0A+=20=20=20int=20err=20=3D=20({int=20_err;=20=0A+=20=20=20=20=20= for=20(int=20i=20=3D=200;=20i=20<=20n;=20++i)=20{=0A+=20=20=20=20=20=20=20= _err=20=3D=2017;=0A+=20=20=20=20=20=20=20_err=20=3D=20bar();=0A+=20=20=20= =20=20}=0A+=20=20=20=20=20_err;=20=0A+=20=20=20});=20/*=20{=20dg-warning=20= "uninitialized"=20"warn=20on=20_err"=20}=20*/=0A+=0A+=20=20=20if=20(err=20= =3D=3D=200)=20return=2017;=20=0A+=20}=0A+=0A+=20return=2018;=0A+}=0A+=0A= diff=20--git=20a/gcc/testsuite/g++.dg/auto-init-uninit-pred-loop-1_c.cc=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-loop-1_c.cc=0Anew=20file=20= mode=20100644=0Aindex=20000000000000..82a1846c6e0b=0A---=20/dev/null=0A= +++=20b/gcc/testsuite/g++.dg/auto-init-uninit-pred-loop-1_c.cc=0A@@=20= -0,0=20+1,23=20@@=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-Wuninitialized=20-O2=20-ftrivial-auto-var-init=3Dzero"=20= }=20*/=0A+=0A+extern=20int=20bar();=0A+int=20foo(int=20n,=20int=20m)=0A= +{=0A+=20for=20(;;)=20{=0A+=20=20=20int=20err=20=3D=20({int=20_err;=20=0A= +=20=20=20=20=20for=20(int=20i=20=3D=200;=20i=20<=2016;=20++i)=20{=0A+=20= =20=20=20=20=20=20if=20(m+i=20>=20n)=0A+=20=20=20=20=20=20=20=20=20=20= break;=0A+=20=20=20=20=20=20=20_err=20=3D=2017;=0A+=20=20=20=20=20=20=20= _err=20=3D=20bar();=0A+=20=20=20=20=20}=0A+=20=20=20=20=20_err;=20=0A+=20= =20=20});=20=0A+=0A+=20=20=20if=20(err=20=3D=3D=200)=20return=2017;=20= });=20/*=20{=20dg-warning=20"uninitialized"=20"warn=20on=20_err"=20}=20= */=0A+=20}=0A+=0A+=20return=2018;=0A+}=0A+=0Adiff=20--git=20= a/gcc/testsuite/g++.dg/auto-init-uninit-pred-loop_1.cc=20= b/gcc/testsuite/g++.dg/auto-init-uninit-pred-loop_1.cc=0Anew=20file=20= mode=20100644=0Aindex=20000000000000..629677a60259=0A---=20/dev/null=0A= +++=20b/gcc/testsuite/g++.dg/auto-init-uninit-pred-loop_1.cc=0A@@=20-0,0=20= +1,21=20@@=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-Wuninitialized=20-O2=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +extern=20int=20bar();=0A+int=20foo(void)=0A+{=0A+=20for=20(;;)=20{=0A+=20= =20=20int=20err=20=3D=20({int=20_err;=20/*=20=20{=20dg-bogus=20= "uninitialized"=20"false=20warning"=20}=20*/=0A+=20=20=20=20=20for=20= (int=20i=20=3D=200;=20i=20<=2016;=20++i)=20{=0A+=20=20=20=20=20=20=20= _err=20=3D=2017;=0A+=20=20=20=20=20=20=20_err=20=3D=20bar();=0A+=20=20=20= =20=20}=0A+=20=20=20=20=20_err;=20/*=20=20{=20dg-bogus=20"uninitialized"=20= "false=20warning"=20}=20*/=0A+=20=20=20});=0A+=0A+=20=20=20if=20(err=20= =3D=3D=200)=20return=2017;=20=0A+=20}=0A+=0A+=20return=2018;=0A+}=0A+=0A= diff=20--git=20a/gcc/testsuite/gcc.dg/auto-init-uninit-1.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-1.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..cb0e7cc62545=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-1.c=0A@@=20-0,0=20+1,30=20@@=0A= +/*=20Spurious=20uninitialized=20variable=20warnings,=20case=201.=0A+=20=20= =20Taken=20from=20cppfiles.c=20(merge_include_chains)=20*/=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O=20-Wuninitialized=20= -ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20list=0A+{=0A+=20= =20struct=20list=20*next;=0A+=20=20int=20id;=0A+};=0A+=0A+extern=20void=20= free=20(void=20*);=0A+=0A+void=20remove_dupes=20(struct=20list=20*el)=0A= +{=0A+=20=20struct=20list=20*p,=20*q,=20*r;=20=20/*=20{=20dg-bogus=20"r"=20= "uninitialized=20variable=20warning"=20}=20*/=0A+=0A+=20=20for=20(p=20=3D=20= el;=20p;=20p=20=3D=20p->next)=0A+=20=20{=0A+=20=20=20=20for=20(q=20=3D=20= el;=20q=20!=3D=20p;=20q=20=3D=20q->next)=0A+=20=20=20=20=20=20if=20= (q->id=20=3D=3D=20p->id)=0A+=20=20=20=20=20=20{=0A+=09r->next=20=3D=20= p->next;=0A+=09free=20(p);=0A+=09p=20=3D=20r;=0A+=09break;=0A+=20=20=20=20= =20=20}=0A+=20=20=20=20r=20=3D=20p;=0A+=20=20}=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-11.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-11.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..559e2d963376=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-11.c=0A@@=20-0,0=20+1,42=20@@=0A= +/*=20Positive=20test=20for=20uninitialized=20variables.=20=20*/=0A+/*=20= {=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O=20= -Wuninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+int=20= sink;=0A+=0A+void=20f1(int=20parm)=09/*=20{=20dg-bogus=20"uninitialized"=20= "parameter"=20}=20*/=0A+{=0A+=20=20sink=20=3D=20parm;=09=09/*=20{=20= dg-bogus=20"uninitialized"=20"parameter"=20}=20*/=0A+}=0A+=0A+void=20= f2(void)=0A+{=0A+=20=20int=20x;=0A+=20=20sink=20=3D=20x;=09=09/*=20{=20= dg-warning=20"is=20used"=20"unconditional"=20}=20*/=0A+}=0A+=0A+void=20= f3(int=20p)=0A+{=0A+=20=20int=20x;=09=09=0A+=20=20if=20(p)=0A+=20=20=20=20= x=20=3D=20p;=0A+=20=20sink=20=3D=20x;=20=20=20=20=20=20=20=20=20=20=20=20= /*=20{=20dg-warning=20"may=20be=20used"=20"conditional"=20}=20*/=0A+}=0A= +=0A+void=20f4(int=20p)=0A+{=0A+=20=20int=20x;=09=09/*=20{=20dg-bogus=20= "uninitialized"=20"easy=20if"=20}=20*/=0A+=20=20if=20(p)=0A+=20=20=20=20= x=20=3D=201;=0A+=20=20else=0A+=20=20=20=20x=20=3D=202;=0A+=20=20sink=20=3D= =20x;=0A+}=0A+=0A+void=20f5(void)=0A+{=0A+=20=20int=20x,=20i;=09=09/*=20= {=20dg-bogus=20"uninitialized"=20"easy=20loop"=20}=20*/=0A+=20=20for=20= (i=20=3D=200;=20i=20<=2010;=20++i)=0A+=20=20=20=20x=20=3D=201;=0A+=20=20= sink=20=3D=20x;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-12.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-12.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..acff725722dc=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-12.c=0A@@=20-0,0=20+1,12=20@@=0A= +/*=20PR=2023497=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-O=20-Wuninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20= */=0A+=0A+typedef=20_Complex=20float=20C;=0A+C=20foo()=0A+{=0A+=20=20C=20= f;=0A+=20=20__real__=20f=20=3D=200;=0A+=20=20__imag__=20f=20=3D=200;=0A+=20= =20return=20f;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-13.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-13.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..87dd8b587e00=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-13.c=0A@@=20-0,0=20+1,10=20@@=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O=20= -Wuninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +typedef=20_Complex=20float=20C;=0A+C=20foo()=0A+{=0A+=20=20C=20f;=0A+=20= =20__imag__=20f=20=3D=200;=0A+=20=20return=20f;=09/*=20{=20dg-warning=20= "is=20used"=20"unconditional"=20}=20*/=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-14.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-14.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..592052a9e9d0=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-14.c=0A@@=20-0,0=20+1,20=20@@=0A= +/*=20PR=2024931=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-O=20-Wuninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20= */=0A+=0A+struct=20p=20{=0A+=20=20=20=20=20=20=20=20short=20x,=20y;=0A= +};=0A+=0A+struct=20s=20{=0A+=20=20=20=20=20=20=20=20int=20i;=0A+=20=20=20= =20=20=20=20=20struct=20p=20p;=0A+};=0A+=0A+struct=20s=20f()=0A+{=0A+=20=20= =20=20=20=20=20=20struct=20s=20s;=0A+=20=20=20=20=20=20=20=20s.p=20=3D=20= (struct=20p){};=0A+=20=20=20=20=20=20=20=20s.i=20=3D=20(s.p.x=20||=20= s.p.y);=0A+=20=20=20=20=20=20=20=20return=20s;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-15.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-15.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..121f0cff274a=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-15.c=0A@@=20-0,0=20+1,26=20@@=0A= +/*=20PR=20tree-optimization/17506=0A+=20=20=20We=20issue=20an=20= uninitialized=20variable=20warning=20at=20a=20wrong=20location=20at=0A+=20= =20=20line=2011,=20which=20is=20very=20confusing.=20=20Make=20sure=20we=20= print=20out=20a=20note=20to=0A+=20=20=20make=20it=20less=20confusing.=20=20= (not=20xfailed=20alternative)=0A+=20=20=20But=20it=20is=20of=20course=20= ok=20if=20we=20warn=20in=20bar=20about=20uninitialized=20use=0A+=20=20=20= of=20j.=20=20(not=20xfailed=20alternative)=20=20*/=0A+/*=20{=20dg-do=20= compile=20}=20*/=0A+/*=20{=20dg-options=20"-O1=20-Wuninitialized=20= -ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+inline=20int=0A+foo=20= (int=20i)=0A+{=0A+=20=20if=20(i)=20/*=20{=20dg-warning=20"used=20= uninitialized"=20}=20*/=0A+=20=20=20=20return=201;=0A+=20=20return=200;=0A= +}=0A+=0A+void=20baz=20(void);=0A+=0A+void=0A+bar=20(void)=0A+{=0A+=20=20= int=20j;=20/*=20{=20dg-message=20"note:=20'j'=20was=20declared=20here"=20= ""=20}=20*/=0A+=20=20for=20(;=20foo=20(j);=20++j)=20=20/*=20{=20= dg-warning=20"'j'=20is=20used=20uninitialized"=20""=20{=20xfail=20*-*-*=20= }=20}=20*/=0A+=20=20=20=20baz=20();=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-16.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-16.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..0e4f336f726f=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-16.c=0A@@=20-0,0=20+1,23=20@@=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O2=20= -Wuninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+int=20= foo,=20bar;=0A+=0A+static=0A+void=20decode_reloc(int=20reloc,=20int=20= *is_alt)=0A+{=0A+=20=20if=20(reloc=20>=3D=2020)=0A+=20=20=20=20=20=20= *is_alt=20=3D=201;=0A+=20=20else=20if=20(reloc=20>=3D=2010)=0A+=20=20=20=20= =20=20*is_alt=20=3D=200;=0A+}=0A+=0A+void=20testfunc()=0A+{=0A+=20=20int=20= alt_reloc;=0A+=0A+=20=20decode_reloc(foo,=20&alt_reloc);=0A+=0A+=20=20if=20= (alt_reloc)=20/*=20{=20dg-warning=20"may=20be=20used=20uninitialized"=20= }=20*/=0A+=20=20=20=20bar=20=3D=2042;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-17.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-17.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..9eec9440c75e=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-17.c=0A@@=20-0,0=20+1,15=20@@=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O=20= -Wuninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +typedef=20_Complex=20float=20C;=0A+C=20foo(int=20cond)=0A+{=0A+=20=20C=20= f;=0A+=20=20__imag__=20f=20=3D=200;=0A+=20=20if=20(cond)=0A+=20=20=20=20= {=0A+=20=20=20=20=20=20__real__=20f=20=3D=201;=0A+=20=20=20=20=20=20= return=20f;=0A+=20=20=20=20}=0A+=20=20return=20f;=09/*=20{=20dg-warning=20= "may=20be=20used"=20"unconditional"=20}=20*/=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-18.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-18.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..4922848f6dc7=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-18.c=0A@@=20-0,0=20+1,24=20@@=0A= +/*=20{=20dg-do=20compile=20}=20=20*/=0A+/*=20{=20dg-options=20"-O=20= -Wuninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+char=20= *foo(int=20bar,=20char=20*baz)=0A+{=0A+=20=20char=20*tmp;=0A+=0A+=20=20= if=20(bar=20&=203)=0A+=20=20=20=20tmp=20=3D=20baz;=0A+=0A+=20=20switch=20= (bar)=20{=0A+=20=20case=201:=0A+=20=20=20=20tmp[5]=20=3D=207;=20=20=20=20= /*=20{=20dg-bogus=20"may=20be=20used=20uninitialized"=20}=20*/=0A+=20=20=20= =20break;=0A+=20=20case=202:=0A+=20=20=20=20tmp[11]=20=3D=2015;=20=20/*=20= {=20dg-bogus=20"may=20be=20used=20uninitialized"=20}=20*/=0A+=20=20=20=20= break;=0A+=20=20default:=0A+=20=20=20=20tmp=20=3D=200;=0A+=20=20=20=20= break;=0A+=20=20}=0A+=0A+=20=20return=20tmp;=20=20=20=20=20=20/*=20{=20= dg-bogus=20"may=20be=20used=20uninitialized"=20}=20*/=0A+}=0Adiff=20= --git=20a/gcc/testsuite/gcc.dg/auto-init-uninit-19.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-19.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..38d27e4f9548=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-19.c=0A@@=20-0,0=20+1,26=20@@=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O=20= -Wuninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+/*=20{=20= dg-additional-options=20"-finline-small-functions"=20{=20target=20= avr-*-*=20}=20}=20*/=0A+=0A+int=20a,=20l,=20m;=0A+float=20*b;=0A+float=20= c,=20d,=20e,=20g,=20h;=0A+unsigned=20char=20i,=20k;=0A+void=0A+fn1=20= (int=20p1,=20float=20*f1,=20float=20*f2,=20float=20*f3,=20unsigned=20= char=20*c1,=20float=20*f4,=0A+=20=20=20=20=20unsigned=20char=20*c2,=20= float=20*p10)=0A+{=0A+=20=20if=20(p1=20&=208)=0A+=20=20=20=20b[3]=20=3D=20= p10[a];=0A+=20=20/*=20{=20dg-warning=20"may=20be=20used=20uninitialized"=20= ""=20{=20target=20{=20{=20nonpic=20||=20pie_enabled=20}=20||=20{=20= hppa*64*-*-*=20*-*-darwin*=20}=20}=20}=20.-1=20}=20*/=0A+}=0A+=0A+void=0A= +fn2=20()=0A+{=0A+=20=20float=20*n;=0A+=20=20if=20(l=20&=206)=0A+=20=20=20= =20n=20=3D=20&c=20+=20m;=0A+=20=20fn1=20(l,=20&d,=20&e,=20&g,=20&i,=20= &h,=20&k,=20n);=0A+=20=20/*=20{=20dg-warning=20"may=20be=20used=20= uninitialized"=20""=20{=20target=20{=20!=20{=20{=20nonpic=20||=20= pie_enabled=20}=20||=20{=20hppa*64*-*-*=20*-*-darwin*=20}=20}=20}=20}=20= .-1=20}=20*/=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-2.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-2.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..da03bf8f6d98=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-2.c=0A@@=20-0,0=20+1,52=20@@=0A= +/*=20Spurious=20uninitialized=20variable=20warnings,=20case=202.=0A+=20=20= =20Taken=20from=20cpphash.c=20(macroexpand)=20*/=0A+/*=20{=20dg-do=20= compile=20}=20*/=0A+/*=20{=20dg-options=20"-O=20-Wuninitialized=20= -ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20definition=0A+{=0A= +=20=20int=20nargs;=0A+=20=20int=20rest_args;=0A+};=0A+=0A+struct=20= cpp_reader;=0A+=0A+enum=20cpp_token=0A+{=0A+=20=20CPP_EOF,=20CPP_POP,=20= CPP_COMMA,=20CPP_RPAREN=0A+};=0A+=0A+extern=20enum=20cpp_token=20macarg=20= (struct=20cpp_reader=20*,=20int);=0A+=0A+void=0A+macroexpand=20(struct=20= cpp_reader=20*pfile,=20struct=20definition=20*defn)=0A+{=0A+=20=20int=20= nargs=20=3D=20defn->nargs;=0A+=0A+=20=20if=20(nargs=20>=3D=200)=0A+=20=20= =20=20{=0A+=20=20=20=20=20=20enum=20cpp_token=20token;=20=20/*=20{=20= dg-bogus=20"token"=20"uninitialized=20variable=20warning"=20}=20*/=0A+=20= =20=20=20=20=20int=20i,=20rest_args;=0A+=20=20=20=20=20=20i=20=3D=200;=0A= +=20=20=20=20=20=20rest_args=20=3D=200;=0A+=20=20=20=20=20=20do=0A+=09{=0A= +=09=20=20if=20(rest_args)=0A+=09=20=20=20=20continue;=0A+=09=20=20if=20= (i=20<=20nargs=20||=20(nargs=20=3D=3D=200=20&&=20i=20=3D=3D=200))=0A+=09=20= =20=20=20{=0A+=09=20=20=20=20=20=20/*=20if=20we=20are=20working=20on=20= last=20arg=20which=20absorbs=20rest=20of=20args...=20*/=0A+=09=20=20=20=20= =20=20if=20(i=20=3D=3D=20nargs=20-=201=20&&=20defn->rest_args)=0A+=09=09= rest_args=20=3D=201;=0A+=09=20=20=20=20=20=20token=20=3D=20macarg=20= (pfile,=20rest_args);=0A+=09=20=20=20=20}=0A+=09=20=20else=0A+=09=20=20=20= =20token=20=3D=20macarg=20(pfile,=200);=0A+=09=20=20if=20(token=20=3D=3D=20= CPP_EOF=20||=20token=20=3D=3D=20CPP_POP)=0A+=09=20=20=20=20return;=0A+=0A= +=09=20=20i++;=0A+=09}=0A+=20=20=20=20=20=20while=20(token=20=3D=3D=20= CPP_COMMA);=0A+=20=20=20=20}=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-20.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-20.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..f533ce9c70e7=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-20.c=0A@@=20-0,0=20+1,18=20@@=0A= +/*=20Spurious=20uninitialized=20variable=20warnings,=20from=20gdb=20*/=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O2=20= -Wuninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+struct=20= os=20{=20struct=20o=20*o;=20};=0A+struct=20o=20{=20struct=20o=20*next;=20= struct=20os=20*se;=20};=0A+void=20f(struct=20o=20*o){=0A+=20=20struct=20= os=20*s;=0A+=20=20if(o)=20s=20=3D=20o->se;=0A+=20=20while(o=20&&=20s=20= =3D=3D=20o->se){=0A+=20=20=20=20s++;=20//=20here=20`o'=20is=20non-zero=20= and=20thus=20s=20is=20initialized=0A+=20=20=20=20s=20=3D=3D=20o->se=20=20= //=20`?'=20is=20essential,=20`if'=20does=20not=20trigger=20the=20warning=0A= +=20=20=20=20=20=20?=20(o=20=3D=20o->next,=20o=20?=20s=20=3D=20o->se=20:=20= 0)=0A+=20=20=20=20=20=20:=200;=0A+=20=20}=0A+}=0A+=0A+=0A+=0Adiff=20= --git=20a/gcc/testsuite/gcc.dg/auto-init-uninit-21.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-21.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..6044eab27870=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-21.c=0A@@=20-0,0=20+1,33=20@@=0A= +/*=20PR69537,=20spurious=20warning=20because=20of=20a=20missed=20= optimization.=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-O2=20-fno-short-enums=20-Wuninitialized=20= -ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+enum=20clnt_stat=20{=0A+=20= RPC_SUCCESS=3D0,=0A+=20RPC_CANTENCODEARGS=3D1,=0A+};=0A+=20=0A+int=20= do_ypcall_tr=20();=0A+=20=0A+static=20int=0A+yp_master=20(char=20= **outname)=0A+{=0A+=20=20//=20Replacing=20enum=20clnt_stat=20with=20int=20= avoids=20the=20warning.=0A+=20=20enum=20clnt_stat=20result;=0A+=20=20= result=20=3D=20do_ypcall_tr=20();=0A+=20=20if=20(result=20!=3D=200)=0A+=20= =20=20=20return=20result;=0A+=20=20*outname=20=3D=20__builtin_strdup=20= ("foo");=0A+=20=20return=200;=0A+}=0A+=20=0A+int=0A+yp_update=20(void)=0A= +{=0A+=20=20char=20*master;=0A+=20=20int=20r;=0A+=20=20if=20((r=20=3D=20= yp_master=20(&master))=20!=3D=200)=0A+=20=20=20=20return=20r;=0A+=20=20= __builtin_free=20(master);=20/*=20{=20dg-bogus=20"uninitialized"=20}=20= */=0A+=20=20return=200;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-22.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-22.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..0200d734a2c3=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-22.c=0A@@=20-0,0=20+1,69=20@@=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O3=20= -Wuninitialized=20--param=20vect-max-version-for-alias-checks=3D20=20= -ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+#include=20=0A= +=0A+#define=20A1=20=202896=20/*=20(1/sqrt(2))<<12=20*/=0A+#define=20A2=20= =202217=0A+#define=20A3=20=203784=0A+#define=20A4=20-5352=0A+=0A+#define=20= IDCT_TRANSFORM(dest,s0,s1,s2,s3,s4,s5,s6,s7,d0,d1,d2,d3,d4,d5,d6,d7,munge,= src)=20{\=0A+=20=20=20=20const=20int=20a0=20=3D=20(src)[s0]=20+=20= (src)[s4];=20\=0A+=20=20=20=20const=20int=20a1=20=3D=20(src)[s0]=20-=20= (src)[s4];=20\=0A+=20=20=20=20const=20int=20a2=20=3D=20(src)[s2]=20+=20= (src)[s6];=20\=0A+=20=20=20=20const=20int=20a3=20=3D=20(A1*((src)[s2]=20= -=20(src)[s6]))=20>>=2011;=20\=0A+=20=20=20=20const=20int=20a4=20=3D=20= (src)[s5]=20+=20(src)[s3];=20\=0A+=20=20=20=20const=20int=20a5=20=3D=20= (src)[s5]=20-=20(src)[s3];=20\=0A+=20=20=20=20const=20int=20a6=20=3D=20= (src)[s1]=20+=20(src)[s7];=20\=0A+=20=20=20=20const=20int=20a7=20=3D=20= (src)[s1]=20-=20(src)[s7];=20\=0A+=20=20=20=20const=20int=20b0=20=3D=20= a4=20+=20a6;=20\=0A+=20=20=20=20const=20int=20b1=20=3D=20(A3*(a5=20+=20= a7))=20>>=2011;=20\=0A+=20=20=20=20const=20int=20b2=20=3D=20((A4*a5)=20= >>=2011)=20-=20b0=20+=20b1;=20\=0A+=20=20=20=20const=20int=20b3=20=3D=20= (A1*(a6=20-=20a4)=20>>=2011)=20-=20b2;=20\=0A+=20=20=20=20const=20int=20= b4=20=3D=20((A2*a7)=20>>=2011)=20+=20b3=20-=20b1;=20\=0A+=20=20=20=20= (dest)[d0]=20=3D=20munge(a0+a2=20=20=20+b0);=20\=0A+=20=20=20=20= (dest)[d1]=20=3D=20munge(a1+a3-a2+b2);=20\=0A+=20=20=20=20(dest)[d2]=20=3D= =20munge(a1-a3+a2+b3);=20\=0A+=20=20=20=20(dest)[d3]=20=3D=20munge(a0-a2=20= =20=20-b4);=20\=0A+=20=20=20=20(dest)[d4]=20=3D=20munge(a0-a2=20=20=20= +b4);=20\=0A+=20=20=20=20(dest)[d5]=20=3D=20munge(a1-a3+a2-b3);=20\=0A+=20= =20=20=20(dest)[d6]=20=3D=20munge(a1+a3-a2-b2);=20\=0A+=20=20=20=20= (dest)[d7]=20=3D=20munge(a0+a2=20=20=20-b0);=20\=0A+}=0A+=0A+#define=20= MUNGE_NONE(x)=20(x)=0A+#define=20IDCT_COL(dest,src)=20= IDCT_TRANSFORM(dest,0,8,16,24,32,40,48,56,0,8,16,24,32,40,48,56,MUNGE_NONE= ,src)=0A+=0A+#define=20MUNGE_ROW(x)=20(((x)=20+=200x7F)>>8)=0A+#define=20= IDCT_ROW(dest,src)=20= IDCT_TRANSFORM(dest,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,MUNGE_ROW,src)=0A+=0A= +static=20inline=20void=20bink_idct_col(int=20*dest,=20const=20int32_t=20= *src)=0A+{=0A+=20=20=20=20if=20= ((src[8]|src[16]|src[24]|src[32]|src[40]|src[48]|src[56])=3D=3D0)=20{=0A= +=20=20=20=20=20=20=20=20dest[0]=20=20=3D=0A+=20=20=20=20=20=20=20=20= dest[8]=20=20=3D=0A+=20=20=20=20=20=20=20=20dest[16]=20=3D=0A+=20=20=20=20= =20=20=20=20dest[24]=20=3D=0A+=20=20=20=20=20=20=20=20dest[32]=20=3D=0A+=20= =20=20=20=20=20=20=20dest[40]=20=3D=0A+=20=20=20=20=20=20=20=20dest[48]=20= =3D=0A+=20=20=20=20=20=20=20=20dest[56]=20=3D=20src[0];=0A+=20=20=20=20}=20= else=20{=0A+=20=20=20=20=20=20=20=20IDCT_COL(dest,=20src);=0A+=20=20=20=20= }=0A+}=0A+=0A+int=20bink_idct_put_c(uint8_t=20*dest,=20int=20linesize,=20= int32_t=20*block)=0A+{=0A+=20=20=20=20int=20i;=0A+=20=20=20=20int=20= temp[64];=0A+=20=20=20=20for=20(i=20=3D=200;=20i=20<=208;=20i++)=0A+=20=20= =20=20=20=20=20=20bink_idct_col(&temp[i],=20&block[i]);=0A+=20=20=20=20= for=20(i=20=3D=200;=20i=20<=208;=20i++)=20{=0A+=20=20=20=20=20=20=20=20= IDCT_ROW(=20(&dest[i*linesize]),=20(&temp[8*i])=20);=0A+=20=20=20=20}=0A= +=0A+=20=20=20=20return=200;=0A+}=0A+=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-23.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-23.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..7dce8d052e16=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-23.c=0A@@=20-0,0=20+1,27=20@@=0A= +/*=20PR=20tree-optimization/78455=20*/=0A+/*=20{=20dg-do=20compile=20}=20= */=0A+/*=20{=20dg-options=20"-O2=20-Wuninitialized=20= -ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+int=20ij;=0A+=0A+void=0A= +ql=20(void)=0A+{=0A+=20=20int=20m5=20=3D=200;=0A+=0A+=20=20for=20(;;)=0A= +=20=20{=0A+=20=20=20=20if=20(0)=0A+=20=20=20=20=20=20for=20(;;)=0A+=20=20= =20=20=20=20{=0A+=20=20=20=20=20=20=20=20int=20*go;=0A+=20=20=20=20=20=20= =20=20int=20*t4=20=3D=20go;=20/*=20{=20dg-warning=20"is=20used=20= uninitialized"=20}=20*/=0A+=0A+=20l1:=0A+=20=20=20=20=20=20=20=20*t4=20=3D= =20(*t4=20!=3D=200)=20?=200=20:=202;=0A+=20=20=20=20=20=20}=0A+=0A+=20=20= =20=20if=20(ij=20!=3D=200)=0A+=20=20=20=20=20=20goto=20l1;=0A+=20=20}=0A= +}=0Adiff=20--git=20a/gcc/testsuite/gcc.dg/auto-init-uninit-24.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-24.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..1f6740c123ad=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-24.c=0A@@=20-0,0=20+1,10=20@@=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O=20= -Wmaybe-uninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +int=20foo=20(int=20x)=0A+{=0A+=20=20int=20y;=0A+=20=20if=20(x)=0A+=20=20= =20=20return=20*(&y=20+=201);=20/*=20{=20dg-bogus=20"may=20be=20used=20= uninitialized"=20}=20*/=0A+=20=20return=200;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-25.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-25.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..f36d95f9d279=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-25.c=0A@@=20-0,0=20+1,23=20@@=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O=20= -Wmaybe-uninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +extern=20unsigned=20bar=20(void);=0A+extern=20void=20quux=20(void);=0A+=0A= +unsigned=20foo=20(unsigned=20v)=0A+{=0A+=20=20unsigned=20u;=0A+=20=20if=20= (v=20!=3D=201)=0A+=20=20=20=20u=20=3D=20bar=20();=0A+=0A+=20=20//=20= Prevent=20the=20"dom"=20pass=20from=20changing=20the=20CFG=20layout=20= based=20on=20the=20inference=0A+=20=20//=20'if=20(v=20!=3D=201)=20is=20= false=20then=20(v=20!=3D=202)=20is=20true'.=20=20(Now=20it=20would=20= have=20to=0A+=20=20//=20duplicate=20the=20loop=20in=20order=20to=20do=20= so,=20which=20is=20deemed=20expensive.)=0A+=20=20for=20(int=20i=20=3D=20= 0;=20i=20<=2010;=20i++)=0A+=20=20=20=20quux=20();=0A+=0A+=20=20if=20(v=20= !=3D=202)=0A+=20=20=20=20return=20u;=20=20=20=20=20=20=20/*=20{=20= dg-warning=20"may=20be=20used=20uninitialized"=20}=20*/=0A+=0A+=20=20= return=200;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-26.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-26.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..ae97ecfa71e1=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-26.c=0A@@=20-0,0=20+1,23=20@@=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O=20= -Wmaybe-uninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +extern=20unsigned=20bar=20(void);=0A+extern=20void=20quux=20(void);=0A+=0A= +unsigned=20foo=20(unsigned=20v)=0A+{=0A+=20=20unsigned=20u;=0A+=20=20if=20= (v=20!=3D=20100)=0A+=20=20=20=20u=20=3D=20bar=20();=0A+=0A+=20=20//=20= Prevent=20the=20"dom"=20pass=20from=20changing=20the=20CFG=20layout=20= based=20on=20the=20inference=0A+=20=20//=20'if=20(v=20!=3D=20100)=20is=20= false=20then=20(v=20<=20105)=20is=20true'.=20=20(Now=20it=20would=20have=20= to=0A+=20=20//=20duplicate=20the=20loop=20in=20order=20to=20do=20so,=20= which=20is=20deemed=20expensive.)=0A+=20=20for=20(int=20i=20=3D=200;=20i=20= <=2010;=20i++)=0A+=20=20=20=20quux=20();=0A+=0A+=20=20if=20(v=20<=20105)=20= /*=20v=20=3D=3D=20100=20falls=20into=20this=20range.=20=20*/=0A+=20=20=20= =20return=20u;=20=20=20=20=20=20=20/*=20{=20dg-warning=20"may=20be=20= used=20uninitialized"=20}=20=20*/=0A+=0A+=20=20return=200;=0A+}=0Adiff=20= --git=20a/gcc/testsuite/gcc.dg/auto-init-uninit-3.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-3.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..7ff228501f8d=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-3.c=0A@@=20-0,0=20+1,33=20@@=0A= +/*=20Spurious=20uninit=20variable=20warnings,=20case=203.=0A+=20=20=20= Inspired=20by=20cppexp.c=20(parse_charconst)=20*/=0A+/*=20{=20dg-do=20= compile=20}=20*/=0A+/*=20{=20dg-options=20"-O=20-Wuninitialized=20= -ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+extern=20void=20error=20= (char=20*);=0A+=0A+int=0A+parse_charconst=20(const=20char=20*start,=20= const=20char=20*end)=0A+{=0A+=20=20int=20c;=20/*=20{=20dg-bogus=20"c"=20= "uninitialized=20variable=20warning"=20}=20*/=0A+=20=20int=20nchars,=20= retval;=0A+=0A+=20=20nchars=20=3D=200;=0A+=20=20retval=20=3D=200;=0A+=20=20= while=20(start=20<=20end)=0A+=20=20=20=20{=0A+=20=20=20=20=20=20c=20=3D=20= *start++;=0A+=20=20=20=20=20=20if=20(c=20=3D=3D=20'\'')=0A+=09break;=0A+=20= =20=20=20=20=20nchars++;=0A+=20=20=20=20=20=20retval=20+=3D=20c;=0A+=20=20= =20=20=20=20retval=20<<=3D=208;=0A+=20=20=20=20}=0A+=0A+=20=20if=20= (nchars=20=3D=3D=200)=0A+=20=20=20=20return=200;=0A+=0A+=20=20if=20(c=20= !=3D=20'\'')=0A+=20=20=20=20error=20("malformed=20character=20= constant");=0A+=0A+=20=20return=20retval;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-34.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-34.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..98fc366c871f=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-34.c=0A@@=20-0,0=20+1,58=20@@=0A= +/*=20PR=20middle-end/10138=20-=20warn=20for=20uninitialized=20arrays=20= passed=20as=20const*=0A+=20=20=20arguments=0A+=20=20=20Verify=20that=20= passing=20pointers=20to=20uninitialized=20objects=20to=20arguments=0A+=20= =20=20to=20functions=20declared=20with=20attribute=20access=20is=20= diagnosed=20where=20expected.=0A+=20=20=20{=20dg-do=20compile=20}=0A+=20=20= =20{=20dg-options=20"-O=20-Wall=20-ftrivial-auto-var-init=3Dzero"=20}=20= */=0A+=0A+#define=20RW(...)=20__attribute__=20((access=20(read_write,=20= __VA_ARGS__)))=0A+=0A+RW=20(1)=20RW=20(3)=20void=0A+f4pi=20(int*,=20= int*,=20int*,=20int*);=20=20=20=20//=20{=20dg-message=20"in=20a=20call=20= to=20'f4pi'=20declared=20with=20attribute=20'access=20\\\(read_write,=20= \[13\]\\\)'"=20}=0A+=0A+=0A+void=20nowarn_scalar=20(void)=0A+{=0A+=20=20= int=20i1=20=3D=200,=20i2,=20i3=20=3D=201,=20i4;=0A+=20=20f4pi=20(&i1,=20= &i2,=20&i3,=20&i4);=0A+}=0A+=0A+void=20warn_scalar_1=20(void)=0A+{=0A+=20= =20int=20i1;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20//=20{=20dg-message=20"declared=20here"=20}=0A+=20=20int=20= i2,=20i3=20=3D=201,=20i4;=0A+=0A+=20=20f4pi=20(&i1,=20&i2,=20&i3,=20= &i4);=20=20=20=20=20=20//=20{=20dg-warning=20"'i1'=20may=20be=20used=20= uninitialized"=20}=0A+}=0A+=0A+void=20warn_scalar_2=20(void)=0A+{=0A+=20=20= int=20j1=20=3D=200,=20j2,=20j4;=0A+=20=20int=20j3;=0A+=0A+=20=20f4pi=20= (&j1,=20&j2,=20&j3,=20&j4);=20=20=20=20=20=20//=20{=20dg-warning=20"'j3'=20= may=20be=20used=20uninitialized"=20}=0A+}=0A+=0A+=0A+void=20= nowarn_array_init=20(void)=0A+{=0A+=20=20int=20a1[4]=20=3D=20{=200=20},=20= a2[5],=20a3[6]=20=3D=20{=200=20},=20a4[7];=0A+=0A+=20=20f4pi=20(a1,=20= a2,=20a3,=20a4);=0A+}=0A+=0A+void=20warn_array_1=20(void)=0A+{=0A+=20=20= int=20a1[4];=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20//=20{=20= dg-message=20"'a1'=20declared=20here"=20}=0A+=20=20int=20a2[5],=20a3[6]=20= =3D=20{=200=20},=20a4[7];=0A+=0A+=20=20f4pi=20(a1,=20a2,=20a3,=20a4);=20=20= =20=20=20=20//=20{=20dg-warning=20"'a1'=20may=20be=20used=20= uninitialized"=20}=0A+}=0A+=0A+void=20warn_array_2=20(void)=0A+{=0A+=20=20= int=20a1[4]=20=3D=20{=200=20},=20a2[5],=20a4[7];=0A+=20=20int=20a3[6];=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20//=20{=20dg-message=20= "'a3'=20declared=20here"=20}=0A+=0A+=20=20f4pi=20(a1,=20a2,=20a3,=20a4);=20= =20=20=20=20=20//=20{=20dg-warning=20"'a3'=20may=20be=20used=20= uninitialized"=20}=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-36.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-36.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..64377d380ee9=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-36.c=0A@@=20-0,0=20+1,238=20@@=0A= +/*=20PR=20middle-end/10138=20-=20warn=20for=20uninitialized=20arrays=20= passed=20as=20const*=0A+=20=20=20arguments=0A+=20=20=20Verify=20that=20= passing=20pointers=20to=20uninitialized=20objects=20to=20const=0A+=20=20=20= arguments=20to=20built-ins=20is=20diagnosed=20where=20expected.=0A+=20=20= =20{=20dg-do=20compile=20}=0A+=20=20=20{=20dg-options=20"-O=20-Wall=20= -ftrivial-auto-var-init=3Dzero"=20}=0A+=20=20=20{=20= dg-require-effective-target=20alloca=20}=20*/=0A+=0A+typedef=20= __SIZE_TYPE__=20size_t;=0A+=0A+void*=20alloca=20(size_t);=0A+void*=20= malloc=20(size_t);=0A+void*=20realloc=20(void*,=20size_t);=0A+=0A+void*=20= memcpy=20(void*,=20const=20void*,=20size_t);=0A+char*=20strcpy=20(char*,=20= const=20char*);=0A+size_t=20strlen=20(const=20char*);=0A+=0A+void=20sink=20= (void*);=0A+=0A+void=20nowarn_array_memcpy=20(void=20*d,=20unsigned=20n)=0A= +{=0A+=20=20int=20a[2];=0A+=20=20/*=20Diagnose=20this?=20=20*/=0A+=20=20= memcpy=20(d,=20a,=20n=20/*=20Non-constant=20to=20avoid=20folding=20into=20= MEM_REF.=20=20*/);=0A+}=0A+=0A+void=20nowarn_array_plus_cst_memcpy=20= (void=20*d,=20unsigned=20n)=0A+{=0A+=20=20int=20a[3];=0A+=20=20/*=20= Diagnose=20this?=20=20*/=0A+=20=20memcpy=20(d,=20a=20+=201,=20n);=0A+}=0A= +=0A+void=20nowarn_array_plus_var_memcpy=20(void=20*d,=20unsigned=20n,=20= int=20i)=0A+{=0A+=20=20int=20a[4];=0A+=20=20/*=20Diagnose=20this?=20=20= */=0A+=20=20memcpy=20(d,=20a=20+=20i,=20n);=0A+}=0A+=0A+void=20= nowarn_array_assign_memcpy=20(char=20*d,=20unsigned=20n)=0A+{=0A+=20=20= int=20a[3];=0A+=20=20a[1]=20=3D=203;=0A+=20=20memcpy=20(d,=20a,=20n);=0A= +}=0A+=0A+void=20nowarn_array_init_memcpy=20(char=20*d,=20unsigned=20n)=0A= +{=0A+=20=20int=20a[4]=20=3D=20{=200=20};=0A+=20=20memcpy=20(d,=20a,=20= n);=0A+}=0A+=0A+void=20nowarn_array_compound_memcpy=20(void=20*d,=20= unsigned=20n)=0A+{=0A+=20=20memcpy=20(d,=20(int[2]){=200=20},=20n);=0A+}=0A= +=0A+void=20nowarn_struct_assign_memcpy=20(void=20*d,=20unsigned=20n)=0A= +{=0A+=20=20struct=20S=20{=20int=20a,=20b,=20c,=20d;=20}=20s;=0A+=20=20= s.b=20=3D=201;=0A+=20=20s.d=20=3D=202;=0A+=20=20memcpy=20(d,=20&s,=20n);=0A= +}=0A+=0A+=0A+void=20nowarn_array_init_strcpy=20(char=20*d[],=20unsigned=20= n)=0A+{=0A+=20=20char=20a[8]=20=3D=20"012";=0A+=0A+=20=20strcpy=20(d[0],=20= a);=0A+=20=20strcpy=20(d[1],=20a=20+=201);=0A+=20=20strcpy=20(d[1],=20a=20= +=202);=0A+=20=20strcpy=20(d[1],=20a=20+=203);=0A+=20=20strcpy=20(d[1],=20= a=20+=204);=0A+=20=20strcpy=20(d[1],=20a=20+=205);=0A+=20=20strcpy=20= (d[1],=20a=20+=206);=0A+=20=20strcpy=20(d[1],=20a=20+=207);=0A+}=0A+=0A+=0A= +void=20nowarn_array_assign_strcpy=20(char=20*d[],=20unsigned=20n)=0A+{=0A= +=20=20char=20a[8];=0A+=20=20a[0]=20=3D=20'0';=0A+=20=20a[1]=20=3D=20= '1';=0A+=20=20a[2]=20=3D=20'2';=0A+=20=20a[3]=20=3D=20'\0';=0A+=0A+=20=20= strcpy=20(d[0],=20a);=0A+=20=20strcpy=20(d[1],=20a=20+=201);=0A+=20=20= strcpy=20(d[1],=20a=20+=202);=0A+=20=20strcpy=20(d[1],=20a=20+=203);=0A= +}=0A+=0A+void=20warn_array_plus_cst_strcpy=20(char=20*d,=20unsigned=20= n)=0A+{=0A+=20=20char=20a[8];=0A+=20=20a[0]=20=3D=20'1';=0A+=20=20a[1]=20= =3D=20'2';=0A+=20=20a[2]=20=3D=20'3';=0A+=20=20a[3]=20=3D=20'\0';=0A+=0A= +=20=20strcpy=20(d,=20a=20+=204);=20=20=20=20=20=20=20=20=20=20//=20{=20= dg-warning=20"\\\[-Wuninitialized"=20}=0A+=20=20strcpy=20(d,=20a=20+=20= 5);=20=20=20=20=20=20=20=20=20=20//=20{=20dg-warning=20= "\\\[-Wuninitialized"=20}=0A+=20=20strcpy=20(d,=20a=20+=206);=20=20=20=20= =20=20=20=20=20=20//=20{=20dg-warning=20"\\\[-Wuninitialized"=20}=0A+=20=20= strcpy=20(d,=20a=20+=207);=20=20=20=20=20=20=20=20=20=20//=20{=20= dg-warning=20"\\\[-Wuninitialized"=20}=0A+}=0A+=0A+void=20= nowarn_array_plus_var_strcpy=20(char=20*d,=20int=20i)=0A+{=0A+=20=20char=20= a[8];=0A+=20=20a[0]=20=3D=20'1';=0A+=20=20a[1]=20=3D=20'2';=0A+=20=20= a[2]=20=3D=20'3';=0A+=20=20a[3]=20=3D=20'\0';=0A+=0A+=20=20strcpy=20(d,=20= a=20+=20i);=0A+}=0A+=0A+=0A+size_t=20nowarn_array_assign_strlen=20(const=20= char=20*s)=0A+{=0A+=20=20char=20a[8];=0A+=20=20a[0]=20=3D=20s[0];=0A+=20=20= a[1]=20=3D=20s[1];=0A+=20=20a[2]=20=3D=20s[2];=0A+=20=20a[3]=20=3D=20= s[3];=0A+=0A+=20=20size_t=20n=20=3D=200;=0A+=0A+=20=20n=20+=3D=20strlen=20= (a);=0A+=20=20n=20+=3D=20strlen=20(a=20+=201);=0A+=20=20n=20+=3D=20= strlen=20(a=20+=202);=0A+=20=20n=20+=3D=20strlen=20(a=20+=203);=0A+=20=20= return=20n;=0A+}=0A+=0A+size_t=20warn_array_plus_cst_strlen=20(const=20= char=20*s)=0A+{=0A+=20=20char=20a[8];=0A+=20=20a[0]=20=3D=20s[0];=0A+=20=20= a[1]=20=3D=20s[1];=0A+=20=20a[2]=20=3D=20s[2];=0A+=20=20a[3]=20=3D=20= s[3];=0A+=0A+=20=20return=20strlen=20(a=20+=204);=20=20=20=20=20=20//=20= {=20dg-warning=20"\\\[-Wuninitialized"=20}=0A+}=0A+=0A+size_t=20= nowarn_array_plus_var_strlen=20(const=20char=20*s,=20int=20i)=0A+{=0A+=20= =20char=20a[8];=0A+=20=20a[0]=20=3D=20s[0];=0A+=20=20a[1]=20=3D=20s[1];=0A= +=20=20a[2]=20=3D=20s[2];=0A+=20=20a[3]=20=3D=20s[3];=0A+=0A+=20=20= return=20strlen=20(a=20+=20i);=0A+}=0A+=0A+=0A+size_t=20= nowarn_alloca_assign_strlen=20(int=20i)=0A+{=0A+=20=20char=20*p=20=3D=20= (char*)alloca=20(8);=0A+=20=20p[i]=20=3D=20'\0';=0A+=20=20return=20= strlen=20(p);=0A+}=0A+=0A+size_t=20nowarn_alloca_escape_strlen=20(int=20= i)=0A+{=0A+=20=20char=20*p=20=3D=20(char*)alloca=20(8);=0A+=20=20sink=20= (p);=0A+=20=20return=20strlen=20(p);=0A+}=0A+=0A+size_t=20= warn_alloca_strlen=20(void)=0A+{=0A+=20=20char=20*p=20=3D=20= (char*)alloca=20(8);=0A+=20=20return=20strlen=20(p);=20=20=20=20=20=20=20= =20=20=20//=20{=20dg-warning=20"\\\[-Wuninitialized"=20}=0A+}=0A+=0A+=0A= +size_t=20nowarn_malloc_assign_strlen=20(int=20i)=0A+{=0A+=20=20char=20= *p=20=3D=20(char*)malloc=20(8);=0A+=20=20p[i]=20=3D=20'\0';=0A+=20=20= return=20strlen=20(p);=0A+}=0A+=0A+size_t=20nowarn_malloc_escape_strlen=20= (int=20i)=0A+{=0A+=20=20char=20*p=20=3D=20(char*)malloc=20(8);=0A+=20=20= sink=20(p);=0A+=20=20return=20strlen=20(p);=0A+}=0A+=0A+size_t=20= warn_malloc_strlen=20(void)=0A+{=0A+=20=20char=20*p=20=3D=20= (char*)malloc=20(8);=0A+=20=20return=20strlen=20(p);=20=20=20=20=20=20=20= =20=20=20//=20{=20dg-warning=20"\\\[-Wuninitialized"=20}=0A+}=0A+=0A+=0A= +size_t=20nowarn_realloc_strlen=20(void=20*p)=0A+{=0A+=20=20char=20*q=20= =3D=20(char*)realloc=20(p,=208);=0A+=20=20return=20strlen=20(q);=0A+}=0A= +=0A+=0A+size_t=20nowarn_vla_assign_strlen=20(int=20n,=20int=20i)=0A+{=0A= +=20=20char=20vla[n];=0A+=20=20vla[i]=20=3D=20'\0';=0A+=20=20return=20= strlen=20(vla);=0A+}=0A+=0A+size_t=20nowarn_vla_strcpy_strlen=20(int=20= n,=20const=20char=20*s,=20int=20i)=0A+{=0A+=20=20char=20vla[n];=0A+=20=20= strcpy=20(vla,=20s);=0A+=20=20return=20strlen=20(vla=20+=20i);=0A+}=0A+=0A= +size_t=20nowarn_vla_escape_strlen=20(int=20n,=20int=20i)=0A+{=0A+=20=20= char=20vla[n];=0A+=20=20sink=20(vla);=0A+=20=20return=20strlen=20(vla);=0A= +}=0A+=0A+size_t=20warn_vla_strlen=20(unsigned=20n)=0A+{=0A+=20=20char=20= vla[n];=0A+=20=20return=20strlen=20(vla);=20=20=20=20=20=20=20=20//=20{=20= dg-warning=20"\\\[-Wuninitialized"=20}=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-37.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-37.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..da3c9db1840a=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-37.c=0A@@=20-0,0=20+1,154=20@@=0A= +/*=20PR=20middle-end/10138=20-=20warn=20for=20uninitialized=20arrays=20= passed=20as=20const=20arguments=0A+=20=20=20Verify=20that=20= -Wuninitialized=20and=20-Wmaybe-uninitialized=20trigger=20(or=20don't)=0A= +=20=20=20when=20passing=20uninitialized=20variables=20by=20reference=20= to=20functions=20declared=0A+=20=20=20with=20or=20without=20attribute=20= access=20and=20with=20(or=20without)=20const=20qualified=0A+=20=20=20= arguments=20of=20array,=20VLA,=20or=20pointer=20types.=0A+=20=20=20{=20= dg-do=20compile=20}=0A+=20=20=20{=20dg-options=20"-O2=20-Wall=20= -ftrack-macro-expansion=3D0=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A= +=0A+#define=20NONE=20=20=20=20/*=20none=20*/=0A+#define=20RO(...)=20= __attribute__=20((access=20(read_only,=20__VA_ARGS__)))=0A+#define=20= RW(...)=20__attribute__=20((access=20(read_write,=20__VA_ARGS__)))=0A= +#define=20WO(...)=20__attribute__=20((access=20(write_only,=20= __VA_ARGS__)))=0A+#define=20X(...)=20=20__attribute__=20((access=20= (none,=20__VA_ARGS__)))=0A+=0A+#define=20CONCAT(x,=20y)=20x=20##=20y=0A= +#define=20CAT(x,=20y)=20=20=20=20CONCAT=20(x,=20y)=0A+#define=20= UNIQ(pfx)=20=20=20=20CAT=20(pfx,=20__LINE__)=0A+=0A+extern=20void=20sink=20= (void*);=0A+=0A+=0A+#define=20T1(attr,=20name,=20type)=09=09=09\=0A+=20=20= void=20UNIQ=20(CAT=20(test_,=20name))(void)=20{=09=09\=0A+=20=20=20=20= extern=20attr=20void=20UNIQ=20(name)(type);=09=09\=0A+=20=20=20=20int=20= x;=09=09=09=09=09\=0A+=20=20=20=20UNIQ=20(name)(&x);=09=09=09=09\=0A+=20=20= =20=20sink=20(&x);=09=09=09=09=09\=0A+=20=20}=0A+=0A+#define=20T2(attr,=20= name,=20types)=09=09=09\=0A+=20=20void=20UNIQ=20(CAT=20(test_,=20= name))(void)=20{=09=09\=0A+=20=20=20=20extern=20attr=20void=20UNIQ=20= (name)(types);=09\=0A+=20=20=20=20int=20x;=09=09=09=09=09\=0A+=20=20=20=20= UNIQ=20(name)(1,=20&x);=09=09=09=09\=0A+=20=20=20=20sink=20(&x);=09=09=09= =09=09\=0A+=20=20}=0A+=0A+=0A+typedef=20int=20IA_[];=0A+typedef=20const=20= int=20CIA_[];=0A+=0A+T1=20(NONE,=20=20=20fia_,=20=20=20IA_);=0A+T1=20= (NONE,=20=20=20fcia_,=20=20CIA_);=20=20=20=20//=20{=20dg-warning=20= "\\\[-Wmaybe-uninitialized"=20}=0A+T1=20(RO=20(1),=20froia_,=20IA_);=20=20= =20=20=20//=20{=20dg-warning=20"\\\[-Wuninitialized"=20}=0A+T1=20(RW=20= (1),=20frwia_,=20IA_);=20=20=20=20=20//=20{=20dg-warning=20= "\\\[-Wmaybe-uninitialized"=20}=0A+T1=20(WO=20(1),=20fwoia_,=20IA_);=0A= +T1=20(X=20(1),=20=20fxia_,=20=20IA_);=0A+=0A+=0A+typedef=20int=20= IA1[1];=0A+typedef=20const=20int=20CIA1[1];=0A+=0A+T1=20(NONE,=20=20=20= fia1,=20=20=20IA1);=0A+T1=20(NONE,=20=20=20fcia1,=20=20CIA1);=20=20=20=20= //=20{=20dg-warning=20"\\\[-Wmaybe-uninitialized"=20}=0A+T1=20(RO=20(1),=20= froia1,=20IA1);=20=20=20=20=20//=20{=20dg-warning=20= "\\\[-Wuninitialized"=20}=0A+T1=20(RW=20(1),=20frwia1,=20IA1);=20=20=20=20= =20//=20{=20dg-warning=20"\\\[-Wmaybe-uninitialized"=20}=0A+T1=20(WO=20= (1),=20fwoia1,=20IA1);=0A+T1=20(X=20(1),=20=20fxia1,=20=20IA1);=0A+=0A+=0A= +#define=20IARS1=20=20int[restrict=20static=201]=0A+#define=20CIARS1=20= const=20int[restrict=20static=201]=0A+=0A+T1=20(NONE,=20=20=20fiars1,=20=20= =20IARS1);=0A+T1=20(NONE,=20=20=20fciars1,=20=20CIARS1);//=20{=20= dg-warning=20"\\\[-Wmaybe-uninitialized"=20}=0A+T1=20(RO=20(1),=20= froiars1,=20IARS1);=20//=20{=20dg-warning=20"\\\[-Wuninitialized"=20}=0A= +T1=20(RW=20(1),=20frwiars1,=20IARS1);=20//=20{=20dg-warning=20= "\\\[-Wmaybe-uninitialized"=20}=0A+T1=20(WO=20(1),=20fwoiars1,=20IARS1);=0A= +T1=20(X=20(1),=20=20fxiars1,=20=20IARS1);=0A+=0A+=0A+#define=20IAS1=20=20= int[static=201]=0A+#define=20CIAS1=20const=20int[static=201]=0A+=0A+T1=20= (NONE,=20=20=20fias1,=20=20=20IAS1);=0A+T1=20(NONE,=20=20=20fcias1,=20=20= CIAS1);=20=20=20//=20{=20dg-warning=20"\\\[-Wmaybe-uninitialized"=20}=0A= +T1=20(RO=20(1),=20froias1,=20IAS1);=20=20=20=20//=20{=20dg-warning=20= "\\\[-Wuninitialized"=20}=0A+T1=20(RW=20(1),=20frwias1,=20IAS1);=20=20=20= =20//=20{=20dg-warning=20"\\\[-Wmaybe-uninitialized"=20}=0A+T1=20(WO=20= (1),=20fwoias1,=20IAS1);=0A+T1=20(X=20(1),=20=20fxias1,=20=20IAS1);=0A+=0A= +=0A+#define=20IAX=20=20int[*]=0A+#define=20CIAX=20const=20int[*]=0A+=0A= +T1=20(NONE,=20=20=20fiax,=20=20=20IAX);=0A+T1=20(NONE,=20=20=20fciax,=20= =20CIAX);=20=20=20=20//=20{=20dg-warning=20"\\\[-Wmaybe-uninitialized"=20= }=0A+T1=20(RO=20(1),=20froiax,=20IAX);=20=20=20=20=20//=20{=20dg-warning=20= "\\\[-Wuninitialized"=20}=0A+T1=20(RW=20(1),=20frwiax,=20IAX);=20=20=20=20= =20//=20{=20dg-warning=20"\\\[-Wmaybe-uninitialized"=20}=0A+T1=20(WO=20= (1),=20fwoiax,=20IAX);=0A+T1=20(X=20(1),=20=20fxiax,=20=20IAX);=0A+=0A+=0A= +#define=20IAN=20=20int=20n,=20int[n]=0A+#define=20CIAN=20int=20n,=20= const=20int[n]=0A+=0A+T2=20(NONE,=20=20=20=20=20=20fian,=20=20=20IAN);=0A= +T2=20(NONE,=20=20=20=20=20=20fcian,=20=20CIAN);=20//=20{=20dg-warning=20= "\\\[-Wmaybe-uninitialized"=20}=0A+T2=20(RO=20(2,=201),=20froian,=20= IAN);=20=20//=20{=20dg-warning=20"\\\[-Wuninitialized"=20}=0A+T2=20(RW=20= (2,=201),=20frwian,=20IAN);=20=20//=20{=20dg-warning=20= "\\\[-Wmaybe-uninitialized"=20}=0A+T2=20(WO=20(2,=201),=20fwoian,=20= IAN);=0A+T2=20(X=20(2,=201),=20=20fxian,=20=20IAN);=0A+=0A+=0A+typedef=20= int*=20IP;=0A+typedef=20const=20int*=20CIP;=0A+=0A+T1=20(NONE,=20=20=20= fip,=20=20=20IP);=0A+T1=20(NONE,=20=20=20fcip,=20=20CIP);=20=20=20=20=20= //=20{=20dg-warning=20"\\\[-Wmaybe-uninitialized"=20}=0A+T1=20(RO=20(1),=20= froip,=20IP);=20=20=20=20=20=20//=20{=20dg-warning=20= "\\\[-Wuninitialized"=20}=0A+T1=20(RW=20(1),=20frwip,=20IP);=20=20=20=20=20= =20//=20{=20dg-warning=20"\\\[-Wmaybe-uninitialized"=20}=0A+T1=20(WO=20= (1),=20fwoip,=20IP);=0A+T1=20(X=20(1),=20=20fxip,=20=20IP);=0A+=0A+=0A= +/*=20Verify=20that=20the=20notes=20printed=20after=20the=20warning=20= mention=20attribute=0A+=20=20=20access=20only=20when=20the=20attribute=20= is=20explicitly=20used=20in=20the=20declaration=0A+=20=20=20and=20not=20= otherwise.=20=20*/=0A+=0A+void=20test_note_cst_restrict=20(void)=0A+{=0A= +=20=20extern=20void=0A+=20=20=20=20fccar=20(const=20char[restrict]);=20=20= =20//=20{=20dg-message=20"by=20argument=201=20of=20type=20'const=20= char\\\[restrict]'=20to=20'fccar'"=20"note"=20}=0A+=0A+=20=20char=20= a[1];=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20//=20{=20= dg-message=20"'a'=20declared=20here"=20"note"=20}=0A+=20=20fccar=20(a);=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20//=20{=20dg-warning=20= "'a'=20may=20be=20used=20uninitialized"=20}=0A+}=0A+=0A+void=20= test_note_vla=20(int=20n)=0A+{=0A+=20=20extern=20void=0A+=20=20=20=20= fccvla=20(const=20char[n]);=20=20=20//=20{=20dg-message=20"by=20argument=20= 1=20of=20type=20'const=20char\\\[n]'=20to=20'fccvla'"=20"note"=20}=0A+=0A= +=20=20char=20a[2];=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= //=20{=20dg-message=20"'a'=20declared=20here"=20"note"=20}=0A+=20=20= fccvla=20(a);=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20//=20{=20= dg-warning=20"'a'=20may=20be=20used=20uninitialized"=20}=0A+}=0A+=0A= +void=20test_note_ro=20(void)=0A+{=0A+=20=20extern=20RO=20(1)=20void=0A+=20= =20=20=20frocar=20(char[restrict]);=20=20//=20{=20dg-message=20"in=20a=20= call=20to=20'frocar'=20declared=20with=20attribute=20'access=20= \\\(read_only,=201\\\)'"=20"note"=20}=0A+=0A+=20=20char=20a[3];=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20//=20{=20dg-message=20"'a'=20= declared=20here"=20"note"=20}=0A+=20=20frocar=20(a);=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20//=20{=20dg-warning=20"'a'=20is=20used=20= uninitialized"=20}=0A+}=0A+=0A+void=20test_note_rw=20(void)=0A+{=0A+=20=20= extern=20RW=20(1)=20void=0A+=20=20=20=20frwcar=20(char[restrict]);=20=20= //=20{=20dg-message=20"in=20a=20call=20to=20'frwcar'=20declared=20with=20= attribute=20'access=20\\\(read_write,=201\\\)'"=20"note"=20}=0A+=0A+=20=20= char=20a[4];=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20//=20{=20= dg-message=20"'a'=20declared=20here"=20"note"=20}=0A+=20=20frwcar=20(a);=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20//=20{=20dg-warning=20= "'a'=20may=20be=20used=20uninitialized"=20}=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-4.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-4.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..482c837cacb2=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-4.c=0A@@=20-0,0=20+1,52=20@@=0A= +/*=20Spurious=20uninit=20variable=20warnings,=20case=204.=0A+=20=20=20= Simplified=20version=20of=20cppexp.c=20(cpp_parse_expr).=0A+=0A+=20=20=20= This=20one=20is=20really=20fragile,=20it=20gets=20it=20right=20if=20you=20= take=20out=20case=0A+=20=20=201,=20or=20if=20the=20structure=20is=20= replaced=20by=20an=20int,=20or=20if=20the=20structure=0A+=20=20=20has=20= fewer=20members=20(!)=20*/=0A+=0A+/*=20{=20dg-do=20compile=20}=20*/=0A= +/*=20{=20dg-options=20"-O=20-Wuninitialized=20= -ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+extern=20void=20abort=20= (void);=0A+=0A+struct=20operation=20{=0A+=20=20=20=20short=20op;=0A+=20=20= =20=20char=20rprio;=0A+=20=20=20=20char=20flags;=0A+=20=20=20=20char=20= unsignedp;=0A+=20=20=20=20long=20value;=0A+};=0A+=0A+extern=20struct=20= operation=20cpp_lex=20(void);=0A+=0A+void=0A+cpp_parse_expr=20(void)=0A= +{=0A+=20=20int=20rprio;=20/*=20{=20dg-bogus=20"rprio"=20"uninitialized=20= variable=20warning=20PR19833"=20}=20*/=0A+=20=20struct=20operation=20op;=0A= +=0A+=20=20for=20(;;)=0A+=20=20=20=20{=0A+=20=20=20=20=20=20op=20=3D=20= cpp_lex=20();=0A+=0A+=20=20=20=20=20=20switch=20(op.op)=0A+=09{=0A+=09= case=200:=0A+=09=20=20break;=0A+=09case=201:=0A+=09=20=20return;=0A+=09= case=202:=0A+=09=20=20rprio=20=3D=201;=0A+=09=20=20break;=0A+=09default:=0A= +=09=20=20return;=0A+=09}=0A+=0A+=20=20=20=20=20=20if=20(op.op=20=3D=3D=20= 0)=0A+=09return;=0A+=0A+=20=20=20=20=20=20if=20(rprio=20!=3D=201)=0A+=09= abort();=0A+=20=20=20=20}=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-5.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-5.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..ada81c912bdd=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-5.c=0A@@=20-0,0=20+1,39=20@@=0A= +/*=20Spurious=20uninitialized-variable=20warnings.=20=20*/=0A+/*=20= Disable=20jump=20threading,=20etc=20to=20test=20compiler=20analysis.=20=20= */=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O=20= -Wuninitialized=20-fno-tree-dce=20-fno-tree-vrp=20= -fno-tree-dominator-opts=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +extern=20void=20use(int);=0A+extern=20void=20foo(void);=0A+=0A+void=0A= +func1(int=20cond)=0A+{=0A+=20=20=20=20int=20x;=20=20/*=20{=20dg-bogus=20= "x"=20"uninitialized=20variable=20warning"=20}=20*/=0A+=0A+=20=20=20=20= if(cond)=0A+=09x=20=3D=201;=0A+=0A+=20=20=20=20foo();=0A+=0A+=20=20=20=20= if(cond)=0A+=09use(x);=0A+}=0A+=0A+void=0A+func2=20(int=20cond)=0A+{=0A+=20= =20=20=20int=20x;=20=20/*=20{=20dg-bogus=20"x"=20"uninitialized=20= variable=20warning"=20}=20*/=0A+=20=20=20=20int=20flag=20=3D=200;=0A+=0A= +=20=20=20=20if(cond)=0A+=20=20=20=20{=0A+=09x=20=3D=201;=0A+=09flag=20=3D= =201;=0A+=20=20=20=20}=0A+=0A+=20=20=20=20foo();=0A+=0A+=20=20=20=20= if(flag)=0A+=09use(x);=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-6.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-6.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..e6cba4ef22c0=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-6.c=0A@@=20-0,0=20+1,47=20@@=0A= +/*=20Spurious=20uninitialized=20variable=20warnings.=0A+=20=20=20This=20= one=20inspired=20by=20java/class.c:build_utf8_ref.=20=20*/=0A+=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O=20-Wuninitialized=20= -ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+#include=20=0A= +=0A+struct=20tree=0A+{=0A+=20=20=20=20struct=20tree=20*car;=0A+=20=20=20= =20struct=20tree=20*cdr;=0A+=20=20=20=20int=20type,=20data;=0A+};=0A+=0A= +extern=20void=20*malloc(size_t);=0A+=0A+#define=20INTEGER_T=201=0A= +#define=20PTR_T=09=20=202=0A+=0A+#define=20APPEND(TREE,=20LAST,=20TYPE,=20= VALUE)=09=09=09=09\=0A+do=20{=09=09=09=09=09=09=09=09\=0A+=20=20=20=20=20= struct=20tree=20*tmp=20=3D=20malloc=20(sizeof=20(struct=20tree));=09=09\=0A= +=20=20=20=20=20tmp->car=20=3D=200;=20tmp->cdr=20=3D=200;=20tmp->type=20= =3D=20TYPE;=09=09\=0A+=20=20=20=20=20tmp->data=20=3D=20VALUE;=09=09=09=09= =09=09\=0A+=20=20=20=20=20if=20(TREE->car)=09=09=09=09=09=09\=0A+=09=20= LAST->cdr=20=3D=20tmp;=09=09=09=09=09\=0A+=20=20=20=20=20else=09=09=09=09= =09=09=09\=0A+=09=20TREE->car=20=3D=20tmp;=09=09=09=09=09\=0A+=20=20=20=20= =20LAST=20=3D=20tmp;=09=09=09=09=09=09\=0A+}=20while(0)=0A+=20=0A+struct=20= tree=20*=0A+make_something(int=20a,=20int=20b,=20int=20c)=0A+{=0A+=20=20=20= =20struct=20tree=20*rv;=0A+=20=20=20=20struct=20tree=20*field;=0A+=0A+=20= =20=20=20rv=20=3D=20malloc=20(sizeof=20(struct=20tree));=0A+=20=20=20=20= rv->car=20=3D=200;=0A+=0A+=20=20=20=20APPEND(rv,=20field,=20INTEGER_T,=20= a);=20=20/*=20{=20dg-bogus=20"field"=20"uninitialized=20variable=20= warning"=20}=20*/=0A+=20=20=20=20APPEND(rv,=20field,=20PTR_T,=20b);=0A+=20= =20=20=20APPEND(rv,=20field,=20INTEGER_T,=20c);=0A+=0A+=20=20=20=20= return=20rv;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-8.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-8.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..6c298870c679=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-8.c=0A@@=20-0,0=20+1,32=20@@=0A= +/*=20Uninitialized=20variable=20warning=20tests...=0A+=20=20=20Inspired=20= by=20part=20of=20optabs.c:expand_binop.=0A+=20=20=20May=20be=20the=20= same=20as=20uninit-1.c.=20=20*/=0A+=0A+/*=20{=20dg-do=20compile=20}=20*/=0A= +/*=20{=20dg-options=20"-O=20-Wuninitialized=20= -ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+#include=20=0A= +=0A+void=0A+add_bignums=20(int=20*out,=20int=20*x,=20int=20*y)=0A+{=0A+=20= =20=20=20int=20p,=20sum;=0A+=20=20=20=20int=20carry;=20/*=20{=20dg-bogus=20= "carry"=20"uninitialized=20variable=20warning"=20}=20*/=0A+=0A+=20=20=20=20= p=20=3D=200;=0A+=20=20=20=20for=20(;=20*x;=20x++,=20y++,=20out++,=20p++)=0A= +=20=20=20=20{=0A+=09if=20(p)=0A+=09=20=20=20=20sum=20=3D=20*x=20+=20*y=20= +=20carry;=0A+=09else=0A+=09=20=20=20=20sum=20=3D=20*x=20+=20*y;=0A+=0A+=09= if=20(sum=20<=200)=0A+=09{=0A+=09=20=20=20=20carry=20=3D=201;=0A+=09=20=20= =20=20sum=20-=3D=20INT_MAX;=0A+=09}=0A+=09else=0A+=09=20=20=20=20carry=20= =3D=200;=0A+=20=20=20=20}=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-9.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-9.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..9d65493bde2a=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-9.c=0A@@=20-0,0=20+1,42=20@@=0A= +/*=20Spurious=20uninitialized=20variable=20warnings.=20=20Slight=20= variant=20on=20the=0A+=20=20=20documented=20case,=20inspired=20by=20= reg-stack.c:record_asm_reg_life.=20=20*/=0A+=0A+/*=20{=20dg-do=20compile=20= }=20*/=0A+/*=20{=20dg-options=20"-O=20-Wuninitialized=20= -ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+/*=20{=20= dg-require-effective-target=20alloca=20}=20*/=0A+=0A+struct=20foo=0A+{=0A= +=20=20=20=20int=20type;=0A+=20=20=20=20struct=20foo=20*car;=0A+=20=20=20= =20struct=20foo=20*cdr;=0A+=20=20=20=20char=20*data;=0A+=20=20=20=20int=20= data2;=0A+};=0A+=0A+extern=20void=20use(struct=20foo=20*);=0A+=0A= +#define=20CLOBBER=206=0A+#define=20PARALLEL=203=0A+=0A+void=0A= +func(struct=20foo=20*list,=20int=20count)=0A+{=0A+=20=20=20=20int=20= n_clobbers=20=3D=200;=0A+=20=20=20=20int=20i;=0A+=20=20=20=20struct=20= foo=20**clob_list;=20=20=20/*=20{=20dg-bogus=20"clob_list"=20= "uninitialized=20variable=20warning"=20}=20*/=0A+=0A+=20=20=20=20= if(list[0].type=20=3D=3D=20PARALLEL)=0A+=20=20=20=20{=0A+=09clob_list=20= =3D=20__builtin_alloca(count=20*=20sizeof(struct=20foo=20*));=0A+=09=0A+=09= for(i=20=3D=201;=20i=20<=20count;=20i++)=0A+=09{=0A+=09=20=20=20=20= if(list[i].type=20=3D=3D=20CLOBBER)=0A+=09=09clob_list[n_clobbers++]=20=3D= =20&list[i];=0A+=09}=0A+=20=20=20=20}=0A+=0A+=20=20=20=20for(i=20=3D=20= 0;=20i=20<=20n_clobbers;=20i++)=0A+=09use(clob_list[i]);=0A+}=0Adiff=20= --git=20a/gcc/testsuite/gcc.dg/auto-init-uninit-A.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-A.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..01fcf59f4504=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-A.c=0A@@=20-0,0=20+1,117=20@@=0A= +/*=20Inspired=20by=20part=20of=20java/parse.y.=0A+=20=20=20May=20be=20a=20= real=20bug=20in=20CSE.=20*/=0A+=0A+/*=20{=20dg-do=20compile=20}=20*/=0A= +/*=20{=20dg-options=20"-O2=20-Wall=20-ftrivial-auto-var-init=3Dzero"=20= }=20*/=0A+=0A+struct=20tree=0A+{=0A+=20=20=20=20struct=20tree=20*car,=20= *cdr,=20*wfl;=0A+=20=20=20=20int=20code;=0A+=20=20=20=20struct=20{=20= unsigned=20int=20renp:1;=0A+=20=20=20=20=20=20unsigned=20int=20rtnp:1;=0A= +=20=20=20=20=20=20unsigned=20int=20rpnp:1;=20}=20flags;=0A+};=0A= +typedef=20struct=20tree=20*tree;=0A+#define=20NULL_TREE=20((tree)0)=0A+=0A= +/*=20Codes=20*/=0A+enum=0A+{=0A+=20=20=20=20CALL_EXPR,=20= NEW_ARRAY_EXPR,=20NEW_CLASS_EXPR,=20CONVERT_EXPR,=0A+=20=20=20=20= ARRAY_REF,=20CONDITIONAL_EXPR,=20STRING_CST,=20EXPR_WITH_FILE_LOCATION=0A= +};=0A+=0A+/*=20Flags=20*/=0A+#define=20RESOLVE_EXPRESSION_NAME_P(t)=20= ((t)->flags.renp)=0A+#define=20RESOLVE_TYPE_NAME_P(t)=20= ((t)->flags.rtnp)=0A+#define=20RESOLVE_PACKAGE_NAME_P(t)=20= ((t)->flags.rpnp)=0A+=0A+/*=20Macros=20*/=0A+#define=20= EXPR_WFL_QUALIFICATION(t)=20((t)->wfl)=0A+#define=20QUAL_WFL(t)=20= ((t)->wfl)=0A+#define=20EXPR_WFL_NODE(t)=20((t)->wfl)=0A+#define=20= TREE_CODE(t)=20((t)->code)=0A+#define=20TREE_OPERAND(t,x)=20((t)->car)=0A= +#define=20CLASSTYPE_SUPER(t)=20((t)->car)=0A+#define=20= IDENTIFIER_LOCAL_VALUE(t)=20((t)->car)=0A+#define=20TREE_CHAIN(t)=20= ((t)->cdr)=0A+#define=20QUAL_RESOLUTION(t)=20((t)->cdr)=0A+=0A+extern=20= tree=20current_class,=20this_identifier_node;=0A+extern=20tree=20= super_identifier_node,=20length_identifier_node;=0A+=0A+tree=20= resolve_and_layout=20(tree,=20tree);=0A+tree=20lookup_field_wrapper=20= (tree,=20tree);=0A+=0A+void=0A+qualify_ambiguous_name=20(id)=0A+=20=20=20= =20=20tree=20id;=0A+{=0A+=20=20tree=20qual,=20qual_wfl,=20decl;=0A+=20=20= tree=20name;=09=20/*=20{=20dg-bogus=20"name"=20"uninitialized=20variable=20= warning"=20}=20*/=0A+=20=20tree=20ptr_type;=20/*=20{=20dg-bogus=20= "ptr_type"=20"uninitialized=20variable=20warning"=20}=20*/=0A+=20=20int=20= again,=20new_array_found=20=3D=200;=0A+=20=20int=20super_found=20=3D=20= 0,=20this_found=20=3D=200;=0A+=0A+=20=20qual=20=3D=20= EXPR_WFL_QUALIFICATION=20(id);=0A+=20=20do=20{=0A+=20=20=20=20qual_wfl=20= =3D=20QUAL_WFL=20(qual);=0A+=20=20=20=20switch=20(TREE_CODE=20= (qual_wfl))=0A+=20=20=20=20=20=20{=0A+=20=20=20=20=20=20case=20= CALL_EXPR:=0A+=09qual_wfl=20=3D=20TREE_OPERAND=20(qual_wfl,=200);=0A+=09= if=20(TREE_CODE=20(qual_wfl)=20!=3D=20EXPR_WITH_FILE_LOCATION)=0A+=09=20=20= {=0A+=09=20=20=20=20qual=20=3D=20EXPR_WFL_QUALIFICATION=20(qual_wfl);=0A= +=09=20=20=20=20qual_wfl=20=3D=20QUAL_WFL=20(qual);=0A+=09=20=20}=0A+=09= break;=0A+=20=20=20=20=20=20case=20NEW_ARRAY_EXPR:=0A+=09qual=20=3D=20= TREE_CHAIN=20(qual);=0A+=09new_array_found=20=3D=20again=20=3D=201;=0A+=09= continue;=0A+=20=20=20=20=20=20case=20NEW_CLASS_EXPR:=0A+=20=20=20=20=20=20= case=20CONVERT_EXPR:=0A+=09qual_wfl=20=3D=20TREE_OPERAND=20(qual_wfl,=20= 0);=0A+=09break;=0A+=20=20=20=20=20=20case=20ARRAY_REF:=0A+=09while=20= (TREE_CODE=20(qual_wfl)=20=3D=3D=20ARRAY_REF)=0A+=09=20=20qual_wfl=20=3D=20= TREE_OPERAND=20(qual_wfl,=200);=0A+=09break;=0A+=20=20=20=20=20=20= default:=0A+=09break;=0A+=20=20=20=20=20=20}=0A+=0A+=20=20=20=20name=20=3D= =20EXPR_WFL_NODE=20(qual_wfl);=0A+=20=20=20=20ptr_type=20=3D=20= current_class;=0A+=20=20=20=20again=20=3D=200;=0A+=0A+=20=20}=20while=20= (again);=0A+=0A+=20=20/*=20If=20you=20put=20straightforward=20uses=20of=20= name=20and=20ptr_type=20here=0A+=20=20=20=20=20instead=20of=20the=20= if-else=20sequence=20below,=20the=20warnings=20go=20away.=0A+=20=20=20=20= =20Therefore=20I=20suspect=20a=20real=20bug.=20*/=0A+=20=20=0A+=20=20if=20= (!this_found=20&&=20!super_found=20&&=20(decl=20=3D=20= IDENTIFIER_LOCAL_VALUE=20(name)))=0A+=20=20=20=20{=0A+=20=20=20=20=20=20= RESOLVE_EXPRESSION_NAME_P=20(qual_wfl)=20=3D=201;=0A+=20=20=20=20=20=20= QUAL_RESOLUTION=20(qual)=20=3D=20decl;=0A+=20=20=20=20}=0A+=20=20else=20= if=20((decl=20=3D=20lookup_field_wrapper=20(ptr_type,=20name))=0A+=09=20=20= =20||=20(new_array_found=20&&=20name=20=3D=3D=20length_identifier_node))=0A= +=20=20=20=20{=0A+=20=20=20=20=20=20RESOLVE_EXPRESSION_NAME_P=20= (qual_wfl)=20=3D=201;=0A+=20=20=20=20=20=20QUAL_RESOLUTION=20(qual)=20=3D=20= (new_array_found=20?=20NULL_TREE=20:=20decl);=0A+=20=20=20=20}=0A+=20=20= else=20if=20((decl=20=3D=20resolve_and_layout=20(name,=20NULL_TREE)))=0A= +=20=20=20=20{=0A+=20=20=20=20=20=20RESOLVE_TYPE_NAME_P=20(qual_wfl)=20=3D= =201;=0A+=20=20=20=20=20=20QUAL_RESOLUTION=20(qual)=20=3D=20decl;=0A+=20=20= =20=20}=0A+=20=20else=20if=20(TREE_CODE=20(QUAL_WFL=20(qual))=20=3D=3D=20= CALL_EXPR=0A+=09=20=20=20||=20TREE_CODE=20(QUAL_WFL=20(qual))=20=3D=3D=20= ARRAY_REF)=0A+=20=20=20=20RESOLVE_EXPRESSION_NAME_P=20(qual_wfl)=20=3D=20= 1;=0A+=20=20else=20=0A+=20=20=20=20RESOLVE_PACKAGE_NAME_P=20(qual_wfl)=20= =3D=201;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-B.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-B.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..0b2837127209=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-B.c=0A@@=20-0,0=20+1,15=20@@=0A= +/*=20Origin:=20PR=20c/179=20from=20Gray=20Watson=20,=20= adapted=20as=20a=20testcase=0A+=20=20=20by=20Joseph=20Myers=20= .=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20= {=20dg-options=20"-O2=20-Wuninitialized=20-ftrivial-auto-var-init=3Dzero"=20= }=20*/=0A+extern=20void=20foo=20(int=20*);=0A+extern=20void=20bar=20= (int);=0A+=0A+void=0A+baz=20(void)=0A+{=0A+=20=20int=20i;=0A+=20=20if=20= (i)=20/*=20{=20dg-warning=20"is=20used=20uninitialized"=20"uninit=20i=20= warning"=20}=20*/=0A+=20=20=20=20bar=20(i);=0A+=20=20foo=20(&i);=0A+}=0A= diff=20--git=20a/gcc/testsuite/gcc.dg/auto-init-uninit-C.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-C.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..a4aa629bf930=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-C.c=0A@@=20-0,0=20+1,21=20@@=0A= +/*=20Spurious=20uninitialized=20variable=20warning,=20inspired=20by=20= libgcc2.c.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-O=20-Wuninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20= */=0A+=0A+/*=20Not=20all=20platforms=20support=20TImode=20integers.=20=20= */=0A+#if=20defined(__LP64__)=20&&=20!defined(__hppa__)=0A+typedef=20int=20= TItype=20__attribute__=20((mode=20(TI)));=0A+#else=0A+typedef=20long=20= TItype;=0A+#endif=0A+=0A+=0A+TItype=0A+__subvdi3=20(TItype=20a,=20TItype=20= b)=0A+{=0A+=20=20TItype=20w;=0A+=20=20=0A+=20=20w=20=3D=20a=20-=20b;=0A+=20= =20=0A+=20=20return=20w;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/auto-init-uninit-H.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-H.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..71e2e2d68d7f=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-H.c=0A@@=20-0,0=20+1,33=20@@=0A= +/*=20PR=2014204=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-O=20-Wall=20-Werror=20-ftrivial-auto-var-init=3Dzero"=20}=20= */=0A+=0A+#if=20defined=20__alpha__=0A+#=20define=20ASM=20__asm__("$30")=0A= +#elif=20defined=20__i386__=0A+#=20define=20ASM=20__asm__("esp")=0A= +#elif=20defined=20(__powerpc__)=20||=20defined=20(__PPC__)=20||=20= defined=20(__ppc__)=20||=20defined=20(_POWER)=0A+#=20define=20ASM=20= __asm__("r1")=0A+#elif=20defined=20__s390__=0A+#=20define=20ASM=20= __asm__("r15")=0A+#elif=20defined=20__mips=0A+#=20define=20ASM=20= __asm__("$sp")=0A+#elif=20defined=20__sparc__=0A+#=20define=20ASM=20= __asm__("sp")=0A+#elif=20defined=20__ia64__=0A+#=20define=20ASM=20= __asm__("r12")=0A+#elif=20defined=20__hppa__=0A+#=20define=20ASM=20= __asm__("%r30")=0A+#elif=20defined=20__xtensa__=0A+#=20define=20ASM=20= __asm__("sp")=0A+#else=0A+/*=20The=20register=20name=20should=20be=20= target-dependent=20so=20for=20other=20targets,=0A+=20=20=20we=20just=20= silence=20the=20test.=20=20*/=0A+#=20define=20ASM=20=3D=200=0A+#endif=0A= +=0A+void=20*load_PCB=20(void)=0A+{=0A+=20=20register=20void=20*sp=20= ASM;=0A+=20=20return=20sp;=09=09=09/*=20{=20dg-bogus=20"uninitialized"=20= }=20*/=0A+}=0Adiff=20--git=20a/gcc/testsuite/gcc.dg/auto-init-uninit-I.c=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-I.c=0Anew=20file=20mode=20100644=0A= index=20000000000000..09680fe9790d=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/auto-init-uninit-I.c=0A@@=20-0,0=20+1,8=20@@=0A= +/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20"-O2=20= -Wuninitialized=20-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+int=20= sys_msgctl=20(void)=0A+{=0A+=20=20struct=20{=20int=20mode;=20}=20setbuf;=0A= +=20=20return=20setbuf.mode;=20=20/*=20{=20dg-warning=20"'setbuf\.mode'=20= is=20used"=20}=20*/=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/aarch64/auto-init-1.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-1.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..0fa470880bf5=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-1.c=0A@@=20-0,0=20+1,32=20= @@=0A+/*=20Verify=20zero=20initialization=20for=20integer=20and=20= pointer=20type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20= compile=20}=20*/=0A+/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dzero=20= -fdump-rtl-expand"=20}=20*/=0A+=0A+#ifndef=20__cplusplus=0A+#=20define=20= bool=20_Bool=0A+#endif=0A+=0A+enum=20E=20{=0A+=20=20N1=20=3D=200,=0A+=20=20= N2,=0A+=20=20N3=0A+};=0A+=0A+extern=20void=20bar=20(char,=20short,=20= int,=20enum=20E,=20long,=20long=20long,=20int=20*,=20bool);=0A+=0A+void=20= foo()=0A+{=0A+=20=20char=20temp1;=0A+=20=20short=20temp2;=0A+=20=20int=20= temp3;=0A+=20=20enum=20E=20temp4;=0A+=20=20long=20temp5;=0A+=20=20long=20= long=20temp6;=0A+=20=20int=20*temp7;=0A+=20=20bool=20temp8;=0A+=0A+=20=20= bar=20(temp1,=20temp2,=20temp3,=20temp4,=20temp5,=20temp6,=20temp7,=20= temp8);=0A+=20=20return;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-rtl-dump-times=20"const_int=200"=2011=20"expand"=20}=20}=20*/=0A= diff=20--git=20a/gcc/testsuite/gcc.target/aarch64/auto-init-10.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-10.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..aceceb87fbe1=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-10.c=0A@@=20-0,0=20+1,18=20= @@=0A+/*=20Verify=20pattern=20initialization=20for=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20padding.=20=20*/=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A+struct=20= test_aligned=20{=0A+=20=20=20=20=20=20=20=20int=20internal1;=0A+=20=20=20= =20=20=20=20=20long=20long=20internal2;=0A+}=20__attribute__=20= ((aligned(64)));=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20= test_aligned=20var;=0A+=20=20return=20var.internal1;=0A+}=0A+=0A+/*=20{=20= dg-final=20{=20scan-assembler-times=20"stp\tq0,=20q0,"=202=20}=20}=20*/=0A= +=0Adiff=20--git=20a/gcc/testsuite/gcc.target/aarch64/auto-init-11.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-11.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..085c38629210=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-11.c=0A@@=20-0,0=20+1,27=20= @@=0A+/*=20Verify=20zero=20initialization=20for=20nested=20structure=20= type=20automatic=20variables=20with=0A+=20=20=20padding.=20=20*/=0A+/*=20= {=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20test_aligned=20= {=0A+=20=20=20=20=20=20=20=20unsigned=20internal1;=0A+=20=20=20=20=20=20=20= =20unsigned=20long=20long=20internal2;=0A+}=20__attribute__=20= ((aligned(64)));=0A+=0A+struct=20test_big_hole=20{=0A+=20=20=20=20=20=20=20= =20char=20one;=0A+=20=20=20=20=20=20=20=20char=20two;=0A+=20=20=20=20=20=20= =20=20char=20three;=0A+=20=20=20=20=20=20=20=20/*=2061=20byte=20padding=20= hole=20here.=20*/=0A+=20=20=20=20=20=20=20=20struct=20test_aligned=20= four;=0A+}=20__attribute__=20((aligned(64)));=0A+=0A+=0A+int=20foo=20()=0A= +{=0A+=20=20struct=20test_big_hole=20var;=0A+=20=20return=20= var.four.internal1;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-assembler-times=20"stp\tq0,=20q0,"=204=20}=20}=20*/=0A+=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/aarch64/auto-init-12.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-12.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..5d1383b0b5c8=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-12.c=0A@@=20-0,0=20+1,27=20= @@=0A+/*=20Verify=20pattern=20initialization=20for=20nested=20structure=20= type=20automatic=20variables=20with=0A+=20=20=20padding.=20=20*/=0A+/*=20= {=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A+struct=20= test_aligned=20{=0A+=20=20=20=20=20=20=20=20unsigned=20internal1;=0A+=20=20= =20=20=20=20=20=20unsigned=20long=20long=20internal2;=0A+}=20= __attribute__=20((aligned(64)));=0A+=0A+struct=20test_big_hole=20{=0A+=20= =20=20=20=20=20=20=20char=20one;=0A+=20=20=20=20=20=20=20=20char=20two;=0A= +=20=20=20=20=20=20=20=20char=20three;=0A+=20=20=20=20=20=20=20=20/*=20= 61=20byte=20padding=20hole=20here.=20*/=0A+=20=20=20=20=20=20=20=20= struct=20test_aligned=20four;=0A+}=20__attribute__=20((aligned(64)));=0A= +=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_big_hole=20var;=0A+=20= =20return=20var.four.internal1;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-assembler-times=20"stp\tq0,=20q0,"=204=20}=20}=20*/=0A+=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/aarch64/auto-init-13.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-13.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..3c45a6c6288d=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-13.c=0A@@=20-0,0=20+1,22=20= @@=0A+/*=20Verify=20zero=20initialization=20for=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20tail=20padding.=20=20*/=0A+/*=20= {=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20char=20*one;=0A+=20=20=20= =20=20=20=20=20char=20*two;=0A+=20=20=20=20=20=20=20=20char=20*three;=0A= +=20=20=20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_trailing_hole=20= var;=0A+=20=20return=20var.four;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-assembler-times=20"stp\txzr,=20xzr,"=202=20}=20}=20*/=0A+=0A+=0A= diff=20--git=20a/gcc/testsuite/gcc.target/aarch64/auto-init-14.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-14.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..500020e7815b=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-14.c=0A@@=20-0,0=20+1,20=20= @@=0A+/*=20Verify=20pattern=20initialization=20for=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20tail=20padding.=20=20*/=0A+/*=20= {=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20char=20*one;=0A+=20=20=20= =20=20=20=20=20char=20*two;=0A+=20=20=20=20=20=20=20=20char=20*three;=0A= +=20=20=20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_trailing_hole=20= var;=0A+=20=20return=20var.four;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-assembler-times=20"stp\txzr,=20xzr,"=202=20}=20}=20*/=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/aarch64/auto-init-15.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-15.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..cb96c3a1e4b2=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-15.c=0A@@=20-0,0=20+1,20=20= @@=0A+/*=20Verify=20zero=20initialization=20for=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20padding=20and=20has=20explicit=20= initialization.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20int=20one;=0A+=20=20=20= =20=20=20=20=20int=20two;=0A+=20=20=20=20=20=20=20=20int=20three;=0A+=20=20= =20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_trailing_hole=20= var=20=3D=20{.one=20=3D=201,.two=20=3D=202,=20.four=20=3D=20'c'};=0A+=20=20= return=20var.four;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20scan-assembler=20= "stp\txzr,=20xzr,"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/aarch64/auto-init-16.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-16.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..ce7c7cd31c1f=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-16.c=0A@@=20-0,0=20+1,22=20= @@=0A+/*=20Verify=20pattern=20initialization=20for=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20padding=20and=20has=20explicit=20= initialization.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20int=20one;=0A+=20=20=20= =20=20=20=20=20int=20two;=0A+=20=20=20=20=20=20=20=20int=20three;=0A+=20=20= =20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_trailing_hole=20= var=20=3D=20{.one=20=3D=201,.two=20=3D=202,=20.four=20=3D=20'c'};=0A+=20=20= return=20var.four;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20scan-assembler=20= "stp\txzr,=20xzr,"=20}=20}=20*/=0A+=0A+=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/aarch64/auto-init-17.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-17.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..c81e5ff28b0b=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-17.c=0A@@=20-0,0=20+1,21=20= @@=0A+/*=20Verify=20zero=20initialization=20for=20array=20type=20with=20= structure=20element=20with=0A+=20=20=20padding.=20=20*/=20=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20int=20one;=0A+=20=20=20= =20=20=20=20=20int=20two;=0A+=20=20=20=20=20=20=20=20int=20three;=0A+=20=20= =20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_trailing_hole=20= var[10];=20=0A+=20=20return=20var[2].four;=0A+}=0A+=0A+/*=20{=20dg-final=20= {=20scan-assembler-times=20"stp\tq0,=20q0,"=205=20}=20}=20*/=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/aarch64/auto-init-18.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-18.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..0ec0ac4cc11c=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-18.c=0A@@=20-0,0=20+1,21=20= @@=0A+/*=20Verify=20pattern=20initialization=20for=20array=20type=20with=20= structure=20element=20with=0A+=20=20=20padding.=20=20*/=20=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20int=20one;=0A+=20=20=20= =20=20=20=20=20int=20two;=0A+=20=20=20=20=20=20=20=20int=20three;=0A+=20=20= =20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_trailing_hole=20= var[10];=20=0A+=20=20return=20var[2].four;=0A+}=0A+=0A+/*=20{=20dg-final=20= {=20scan-assembler-times=20"str\tw0,=20"=2030=20}=20}=20*/=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/aarch64/auto-init-19.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-19.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..02f7edc51008=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-19.c=0A@@=20-0,0=20+1,27=20= @@=0A+/*=20Verify=20zero=20initialization=20for=20union=20type=20with=20= structure=20field=20with=0A+=20=20=20padding.=20=20*/=20=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20int=20one;=0A+=20=20=20= =20=20=20=20=20int=20two;=0A+=20=20=20=20=20=20=20=20int=20three;=0A+=20=20= =20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+union=20test_union_padding=20{=0A+=20=20struct=20= test_trailing_hole=20u1;=0A+=20=20long=20long=20u2;=0A+};=0A+=0A+=0A+int=20= foo=20()=0A+{=0A+=20=20union=20test_union_padding=20var;=0A+=20=20return=20= var.u1.four;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20scan-assembler=20= "stp\txzr,=20xzr,"=20}=20}=20*/=0A+=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/aarch64/auto-init-2.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-2.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..2cbe34ec0008=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-2.c=0A@@=20-0,0=20+1,37=20= @@=0A+/*=20Verify=20pattern=20initialization=20for=20integer=20and=20= pointer=20type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20= compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern=20-fdump-rtl-expand"=20}=20*/=0A+=0A= +#ifndef=20__cplusplus=0A+#=20define=20bool=20_Bool=0A+#endif=0A+=0A= +enum=20E=20{=0A+=20=20N1=20=3D=200,=0A+=20=20N2,=0A+=20=20N3=0A+};=0A+=0A= +extern=20void=20bar=20(char,=20short,=20int,=20enum=20E,=20long,=20long=20= long,=20int=20*,=20bool);=0A+=0A+void=20foo()=0A+{=0A+=20=20char=20= temp1;=0A+=20=20short=20temp2;=0A+=20=20int=20temp3;=0A+=20=20enum=20E=20= temp4;=0A+=20=20long=20temp5;=0A+=20=20long=20long=20temp6;=0A+=20=20int=20= *temp7;=0A+=20=20bool=20temp8;=0A+=0A+=20=20bar=20(temp1,=20temp2,=20= temp3,=20temp4,=20temp5,=20temp6,=20temp7,=20temp8);=0A+=20=20return;=0A= +}=0A+=0A+/*=20{=20dg-final=20{=20scan-rtl-dump-times=20= "0xffffffffffffffaa"=201=20"expand"=20}=20}=20*/=0A+/*=20{=20dg-final=20= {=20scan-rtl-dump-times=20"0xffffffffffffaaaa"=201=20"expand"=20}=20}=20= */=0A+/*=20{=20dg-final=20{=20scan-rtl-dump-times=20"0xffffffffaaaaaaaa"=20= 2=20"expand"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-rtl-dump-times=20= "0xaaaaaaaaaaaaaaaa"=203=20"expand"=20}=20}=20*/=0A+/*=20{=20dg-final=20= {=20scan-rtl-dump-times=20"const_int=200"=204=20"expand"=20}=20}=20*/=0A= +=0Adiff=20--git=20a/gcc/testsuite/gcc.target/aarch64/auto-init-20.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-20.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..0ef9acd681bf=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-20.c=0A@@=20-0,0=20+1,27=20= @@=0A+/*=20Verify=20pattern=20initialization=20for=20union=20type=20with=20= structure=20field=20with=0A+=20=20=20padding.=20=20*/=20=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20int=20one;=0A+=20=20=20= =20=20=20=20=20int=20two;=0A+=20=20=20=20=20=20=20=20int=20three;=0A+=20=20= =20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+union=20test_union_padding=20{=0A+=20=20struct=20= test_trailing_hole=20u1;=0A+=20=20long=20long=20u2;=0A+};=0A+=0A+=0A+int=20= foo=20()=0A+{=0A+=20=20union=20test_union_padding=20var;=0A+=20=20return=20= var.u1.four;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20scan-assembler=20= "stp\txzr,=20xzr,"=20}=20}=20*/=0A+=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/aarch64/auto-init-3.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-3.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..78291a1033b7=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-3.c=0A@@=20-0,0=20+1,19=20= @@=0A+/*=20Verify=20zero=20initialization=20for=20floating=20point=20= type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20= */=0A+/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dzero=20= -fdump-rtl-expand"=20}=20*/=0A+=0A+long=20double=20result;=0A+=0A+long=20= double=20foo()=0A+{=0A+=20=20float=20temp1;=0A+=20=20double=20temp2;=0A+=20= =20long=20double=20temp3;=0A+=20=20=0A+=20=20result=20=3D=20temp1=20+=20= temp2=20+=20temp3;=0A+=20=20return=20result;=0A+}=0A+=0A+/*=20{=20= dg-final=20{=20scan-rtl-dump=20"const_double:SF=200.0"=20"expand"=20}=20= }=20*/=0A+/*=20{=20dg-final=20{=20scan-rtl-dump=20"const_double:DF=20= 0.0"=20"expand"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-rtl-dump=20= "const_double:TF=200.0"=20"expand"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/aarch64/auto-init-4.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-4.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..53b820385dfb=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-4.c=0A@@=20-0,0=20+1,19=20= @@=0A+/*=20Verify=20pattern=20initialization=20for=20floating=20point=20= type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20= */=0A+/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dpattern=20= -fdump-rtl-expand"=20}=20*/=0A+=0A+long=20double=20result;=0A+=0A+long=20= double=20foo()=0A+{=0A+=20=20float=20temp1;=0A+=20=20double=20temp2;=0A+=20= =20long=20double=20temp3;=0A+=20=20=0A+=20=20result=20=3D=20temp1=20+=20= temp2=20+=20temp3;=0A+=20=20return=20result;=0A+}=0A+=0A+/*=20{=20= dg-final=20{=20scan-rtl-dump=20"const_double:SF=20\\+QNaN"=20"expand"=20= }=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-rtl-dump=20"const_double:DF=20= \\+QNaN"=20"expand"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-rtl-dump=20"const_double:TF=20\\+QNaN"=20"expand"=20}=20}=20*/=0A= diff=20--git=20a/gcc/testsuite/gcc.target/aarch64/auto-init-5.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-5.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..092f83e16aed=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-5.c=0A@@=20-0,0=20+1,19=20= @@=0A+/*=20Verify=20zero=20initialization=20for=20complex=20type=20= automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A= +/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+=0A= +_Complex=20long=20double=20result;=0A+=0A+_Complex=20long=20double=20= foo()=0A+{=0A+=20=20_Complex=20float=20temp1;=0A+=20=20_Complex=20double=20= temp2;=0A+=20=20_Complex=20long=20double=20temp3;=0A+=0A+=20=20result=20= =3D=20temp1=20+=20temp2=20+=20temp3;=0A+=20=20return=20result;=0A+}=0A+=0A= +/*=20{=20dg-final=20{=20scan-assembler-times=20".word\\t0"=2014=20}=20}=20= */=0A+=0Adiff=20--git=20a/gcc/testsuite/gcc.target/aarch64/auto-init-6.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-6.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..8cea59879803=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-6.c=0A@@=20-0,0=20+1,21=20= @@=0A+/*=20Verify=20pattern=20initialization=20for=20complex=20type=20= automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A= +/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A= +=0A+_Complex=20long=20double=20result;=0A+=0A+_Complex=20long=20double=20= foo()=0A+{=0A+=20=20_Complex=20float=20temp1;=0A+=20=20_Complex=20double=20= temp2;=0A+=20=20_Complex=20long=20double=20temp3;=0A+=0A+=20=20result=20= =3D=20temp1=20+=20temp2=20+=20temp3;=0A+=20=20return=20result;=0A+}=0A+=0A= +/*=20{=20dg-final=20{=20scan-assembler-times=20".word\\t2143289344"=202=20= }=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-assembler-times=20= ".word\\t2146959360"=202=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-assembler-times=20".word\\t2147450880"=202=20}=20}=20*/=0A+=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/aarch64/auto-init-7.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-7.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..ac27fbe92f4a=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-7.c=0A@@=20-0,0=20+1,32=20= @@=0A+/*=20Verify=20zero=20initialization=20for=20array,=20union,=20and=20= structure=20type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20= compile=20}=20*/=0A+/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dzero=20= -fdump-rtl-expand"=20}=20*/=0A+=0A+struct=20S=0A+{=0A+=20=20int=20f1;=0A= +=20=20float=20f2;=0A+=20=20char=20f3[20];=0A+};=0A+=0A+union=20U=0A+{=0A= +=20=20char=20u1[5];=0A+=20=20int=20u2;=0A+=20=20float=20u3;=20=0A+};=0A= +=0A+double=20result;=0A+=0A+double=20foo()=0A+{=0A+=20=20int=20= temp1[3];=0A+=20=20double=20temp2[3];=0A+=20=20struct=20S=20temp3;=0A+=20= =20union=20U=20temp4;=0A+=20=20=0A+=20=20result=20=3D=20temp1[2]=20+=20= temp2[1]=20+=20temp3.f2=20+=20temp4.u3;=0A+=20=20return=20result;=0A+}=0A= +=0A+/*=20{=20dg-final=20{=20scan-rtl-dump-times=20"const_int=200"=208=20= "expand"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/aarch64/auto-init-8.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-8.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..2f1de120ea84=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-8.c=0A@@=20-0,0=20+1,33=20= @@=0A+/*=20Verify=20pattern=20initialization=20for=20array,=20union,=20= and=20structure=20type=20automatic=20variables.=20=20*/=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern=20-fdump-rtl-expand"=20}=20*/=0A+=0A= +struct=20S=0A+{=0A+=20=20int=20f1;=0A+=20=20float=20f2;=0A+=20=20char=20= f3[20];=0A+};=0A+=0A+union=20U=0A+{=0A+=20=20char=20u1[5];=0A+=20=20int=20= u2;=0A+=20=20float=20u3;=20=0A+};=0A+=0A+double=20result;=0A+=0A+double=20= foo()=0A+{=0A+=20=20int=20temp1[3];=0A+=20=20double=20temp2[3];=0A+=20=20= struct=20S=20temp3;=0A+=20=20union=20U=20temp4;=0A+=20=20=0A+=20=20= result=20=3D=20temp1[2]=20+=20temp2[1]=20+=20temp3.f2=20+=20temp4.u3;=0A= +=20=20return=20result;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-rtl-dump-times=20"0xffffffffaaaaaaaa"=204=20"expand"=20}=20}=20*/=0A= +/*=20{=20dg-final=20{=20scan-rtl-dump-times=20"0xffffffffffffffaa"=2025=20= "expand"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/aarch64/auto-init-9.c=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-9.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..7294de57cf2a=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/aarch64/auto-init-9.c=0A@@=20-0,0=20+1,19=20= @@=0A+/*=20Verify=20zero=20initialization=20for=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20padding.=20=20*/=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20test_aligned=20= {=0A+=20=20=20=20=20=20=20=20int=20internal1;=0A+=20=20=20=20=20=20=20=20= long=20long=20internal2;=0A+}=20__attribute__=20((aligned(64)));=0A+=0A= +int=20foo=20()=0A+{=0A+=20=20struct=20test_aligned=20var;=0A+=20=20= return=20var.internal1;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-assembler-times=20"stp\tq0,=20q0,"=202=20}=20}=20*/=0A+=0A+=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/i386/auto-init-1.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-1.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..b7690df24060=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-1.c=0A@@=20-0,0=20+1,32=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20integer=20and=20pointer=20= type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20= */=0A+/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dzero=20= -fdump-rtl-expand"=20}=20*/=0A+=0A+#ifndef=20__cplusplus=0A+#=20define=20= bool=20_Bool=0A+#endif=0A+=0A+enum=20E=20{=0A+=20=20N1=20=3D=200,=0A+=20=20= N2,=0A+=20=20N3=0A+};=0A+=0A+extern=20void=20bar=20(char,=20short,=20= int,=20enum=20E,=20long,=20long=20long,=20int=20*,=20bool);=0A+=0A+void=20= foo()=0A+{=0A+=20=20char=20temp1;=0A+=20=20short=20temp2;=0A+=20=20int=20= temp3;=0A+=20=20enum=20E=20temp4;=0A+=20=20long=20temp5;=0A+=20=20long=20= long=20temp6;=0A+=20=20int=20*temp7;=0A+=20=20bool=20temp8;=0A+=0A+=20=20= bar=20(temp1,=20temp2,=20temp3,=20temp4,=20temp5,=20temp6,=20temp7,=20= temp8);=0A+=20=20return;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-rtl-dump-times=20"const_int=200"=2010=20"expand"=20}=20}=20*/=0A= diff=20--git=20a/gcc/testsuite/gcc.target/i386/auto-init-10.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-10.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..88f95b7d096b=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-10.c=0A@@=20-0,0=20+1,19=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20padding.=20=20*/=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A+struct=20= test_aligned=20{=0A+=20=20=20=20=20=20=20=20int=20internal1;=0A+=20=20=20= =20=20=20=20=20long=20long=20internal2;=0A+}=20__attribute__=20= ((aligned(64)));=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20= test_aligned=20var;=0A+=20=20return=20var.internal1;=0A+}=0A+=0A+/*=20{=20= dg-final=20{=20scan-assembler-times=20"movq\t\\\$0,"=208=20}=20}=20*/=0A= +=0A+=0Adiff=20--git=20a/gcc/testsuite/gcc.target/i386/auto-init-11.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-11.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..8a6d764b9fa4=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-11.c=0A@@=20-0,0=20+1,30=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20nested=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20padding.=20=20*/=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20test_aligned=20= {=0A+=20=20=20=20=20=20=20=20unsigned=20internal1;=0A+=20=20=20=20=20=20=20= =20unsigned=20long=20long=20internal2;=0A+}=20__attribute__=20= ((aligned(64)));=0A+=0A+struct=20test_big_hole=20{=0A+=20=20=20=20=20=20=20= =20char=20one;=0A+=20=20=20=20=20=20=20=20char=20two;=0A+=20=20=20=20=20=20= =20=20char=20three;=0A+=20=20=20=20=20=20=20=20/*=2061=20byte=20padding=20= hole=20here.=20*/=0A+=20=20=20=20=20=20=20=20struct=20test_aligned=20= four;=0A+}=20__attribute__=20((aligned(64)));=0A+=0A+=0A+int=20foo=20()=0A= +{=0A+=20=20struct=20test_big_hole=20var;=0A+=20=20return=20= var.four.internal1;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20scan-assembler=20= "movl\t\\\$0,"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-assembler=20= "movl\t\\\$16,"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-assembler=20= "rep=20stosq"=20}=20}=20*/=0A+=0A+=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/i386/auto-init-12.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-12.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..b5a7bd440a93=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-12.c=0A@@=20-0,0=20+1,30=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20nested=20structure=20= type=20automatic=20variables=20with=0A+=20=20=20padding.=20=20*/=0A+/*=20= {=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A+struct=20= test_aligned=20{=0A+=20=20=20=20=20=20=20=20unsigned=20internal1;=0A+=20=20= =20=20=20=20=20=20unsigned=20long=20long=20internal2;=0A+}=20= __attribute__=20((aligned(64)));=0A+=0A+struct=20test_big_hole=20{=0A+=20= =20=20=20=20=20=20=20char=20one;=0A+=20=20=20=20=20=20=20=20char=20two;=0A= +=20=20=20=20=20=20=20=20char=20three;=0A+=20=20=20=20=20=20=20=20/*=20= 61=20byte=20padding=20hole=20here.=20*/=0A+=20=20=20=20=20=20=20=20= struct=20test_aligned=20four;=0A+}=20__attribute__=20((aligned(64)));=0A= +=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_big_hole=20var;=0A+=20= =20return=20var.four.internal1;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-assembler=20"movl\t\\\$0,"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-assembler=20"movl\t\\\$16,"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-assembler=20"rep=20stosq"=20}=20}=20*/=0A+=0A+=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/i386/auto-init-13.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-13.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..e18bc3073e18=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-13.c=0A@@=20-0,0=20+1,22=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20tail=20padding.=20=20*/=0A+/*=20= {=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20char=20*one;=0A+=20=20=20= =20=20=20=20=20char=20*two;=0A+=20=20=20=20=20=20=20=20char=20*three;=0A= +=20=20=20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_trailing_hole=20= var;=0A+=20=20return=20var.four;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-assembler-times=20"movq\t\\\$0,"=204=20}=20}=20*/=0A+=0A+=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/i386/auto-init-14.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-14.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..55a4c9da54b2=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-14.c=0A@@=20-0,0=20+1,22=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20tail=20padding.=20=20*/=0A+/*=20= {=20dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20char=20*one;=0A+=20=20=20= =20=20=20=20=20char=20*two;=0A+=20=20=20=20=20=20=20=20char=20*three;=0A= +=20=20=20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_trailing_hole=20= var;=0A+=20=20return=20var.four;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-assembler-times=20"movq\t\\\$0,"=204=20}=20}=20*/=0A+=0A+=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/i386/auto-init-15.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-15.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..b5abffb0fc66=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-15.c=0A@@=20-0,0=20+1,22=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20padding=20and=20has=20explicit=20= initialization.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20int=20one;=0A+=20=20=20= =20=20=20=20=20int=20two;=0A+=20=20=20=20=20=20=20=20int=20three;=0A+=20=20= =20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_trailing_hole=20= var=20=3D=20{.one=20=3D=201,.two=20=3D=202,=20.four=20=3D=20'c'};=0A+=20=20= return=20var.four;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-assembler-times=20"movq\t\\\$0,"=202=20}=20}=20*/=0A+=0A+=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/i386/auto-init-16.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-16.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..66591cff4488=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-16.c=0A@@=20-0,0=20+1,22=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20padding=20and=20has=20explicit=20= initialization.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20int=20one;=0A+=20=20=20= =20=20=20=20=20int=20two;=0A+=20=20=20=20=20=20=20=20int=20three;=0A+=20=20= =20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_trailing_hole=20= var=20=3D=20{.one=20=3D=201,.two=20=3D=202,=20.four=20=3D=20'c'};=0A+=20=20= return=20var.four;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-assembler-times=20"movq\t\\\$0,"=202=20}=20}=20*/=0A+=0A+=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/i386/auto-init-17.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-17.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..40fccadf920d=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-17.c=0A@@=20-0,0=20+1,23=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20array=20type=20with=20= structure=20element=20with=0A+=20=20=20padding.=20=20*/=20=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20int=20one;=0A+=20=20=20= =20=20=20=20=20int=20two;=0A+=20=20=20=20=20=20=20=20int=20three;=0A+=20=20= =20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_trailing_hole=20= var[10];=20=0A+=20=20return=20var[2].four;=0A+}=0A+=0A+/*=20{=20dg-final=20= {=20scan-assembler=20"movl\t\\\$0,"=20}=20}=20*/=0A+/*=20{=20dg-final=20= {=20scan-assembler=20"movl\t\\\$20,"=20}=20}=20*/=0A+/*=20{=20dg-final=20= {=20scan-assembler=20"rep=20stosq"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/i386/auto-init-18.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-18.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..a422a8d16b40=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-18.c=0A@@=20-0,0=20+1,21=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20array=20type=20with=20= structure=20element=20with=0A+=20=20=20padding.=20=20*/=20=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20int=20one;=0A+=20=20=20= =20=20=20=20=20int=20two;=0A+=20=20=20=20=20=20=20=20int=20three;=0A+=20=20= =20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+=0A+int=20foo=20()=0A+{=0A+=20=20struct=20test_trailing_hole=20= var[10];=20=0A+=20=20return=20var[2].four;=0A+}=0A+=0A+/*=20{=20dg-final=20= {=20scan-assembler-times=20"movq\t\\\$0,"=2020=20}=20}=20*/=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/i386/auto-init-19.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-19.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..31a3ee1fe971=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-19.c=0A@@=20-0,0=20+1,26=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20union=20type=20with=20= structure=20field=20with=0A+=20=20=20padding.=20=20*/=20=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20int=20one;=0A+=20=20=20= =20=20=20=20=20int=20two;=0A+=20=20=20=20=20=20=20=20int=20three;=0A+=20=20= =20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+union=20test_union_padding=20{=0A+=20=20struct=20= test_trailing_hole=20u1;=0A+=20=20long=20long=20u2;=0A+};=0A+=0A+=0A+int=20= foo=20()=0A+{=0A+=20=20union=20test_union_padding=20var;=0A+=20=20return=20= var.u1.four;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20scan-assembler-times=20= "movq\t\\\$0,"=202=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/i386/auto-init-2.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-2.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..c7e006eb97ff=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-2.c=0A@@=20-0,0=20+1,37=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20integer=20and=20pointer=20= type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20= */=0A+/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dpattern=20= -fdump-rtl-expand"=20}=20*/=0A+=0A+#ifndef=20__cplusplus=0A+#=20define=20= bool=20_Bool=0A+#endif=0A+=0A+enum=20E=20{=0A+=20=20N1=20=3D=200,=0A+=20=20= N2,=0A+=20=20N3=0A+};=0A+=0A+extern=20void=20bar=20(char,=20short,=20= int,=20enum=20E,=20long,=20long=20long,=20int=20*,=20bool);=0A+=0A+void=20= foo()=0A+{=0A+=20=20char=20temp1;=0A+=20=20short=20temp2;=0A+=20=20int=20= temp3;=0A+=20=20enum=20E=20temp4;=0A+=20=20long=20temp5;=0A+=20=20long=20= long=20temp6;=0A+=20=20int=20*temp7;=0A+=20=20bool=20temp8;=0A+=0A+=20=20= bar=20(temp1,=20temp2,=20temp3,=20temp4,=20temp5,=20temp6,=20temp7,=20= temp8);=0A+=20=20return;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-rtl-dump-times=20"0xffffffffffffffaa"=201=20"expand"=20}=20}=20*/=0A= +/*=20{=20dg-final=20{=20scan-rtl-dump-times=20"0xffffffffffffaaaa"=201=20= "expand"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-rtl-dump-times=20= "0xffffffffaaaaaaaa"=202=20"expand"=20}=20}=20*/=0A+/*=20{=20dg-final=20= {=20scan-rtl-dump-times=20"0xaaaaaaaaaaaaaaaa"=203=20"expand"=20}=20}=20= */=0A+/*=20{=20dg-final=20{=20scan-rtl-dump-times=20"const_int=200"=203=20= "expand"=20}=20}=20*/=0A+=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/i386/auto-init-20.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-20.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..e675e8f2cece=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-20.c=0A@@=20-0,0=20+1,26=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20union=20type=20with=20= structure=20field=20with=0A+=20=20=20padding.=20=20*/=20=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A+struct=20= test_trailing_hole=20{=0A+=20=20=20=20=20=20=20=20int=20one;=0A+=20=20=20= =20=20=20=20=20int=20two;=0A+=20=20=20=20=20=20=20=20int=20three;=0A+=20=20= =20=20=20=20=20=20char=20four;=0A+=20=20=20=20=20=20=20=20/*=20= "sizeof(unsigned=20long)=20-=201"=20byte=20padding=20hole=20here.=20*/=0A= +};=0A+=0A+union=20test_union_padding=20{=0A+=20=20struct=20= test_trailing_hole=20u1;=0A+=20=20long=20long=20u2;=0A+};=0A+=0A+=0A+int=20= foo=20()=0A+{=0A+=20=20union=20test_union_padding=20var;=0A+=20=20return=20= var.u1.four;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20scan-assembler-times=20= "movq\t\\\$0,"=202=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/i386/auto-init-3.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-3.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..0771f4f84188=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-3.c=0A@@=20-0,0=20+1,20=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20floating=20point=20type=20= automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A= +/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A= +long=20double=20result;=0A+=0A+long=20double=20foo()=0A+{=0A+=20=20= float=20temp1;=0A+=20=20double=20temp2;=0A+=20=20long=20double=20temp3;=0A= +=0A+=20=20result=20=3D=20temp1=20+=20temp2=20+=20temp3;=0A+=20=20return=20= result;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20scan-assembler=20"pxor\[=20= \t\]+%xmm0,=20%xmm0"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-assembler=20"movss\[=20\t\]+%xmm0"=20}=20}=20*/=0A+/*=20{=20= dg-final=20{=20scan-assembler=20"movsd\[=20\t\]+%xmm0"=20}=20}=20*/=0A+=0A= diff=20--git=20a/gcc/testsuite/gcc.target/i386/auto-init-4.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-4.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..4001e2c78e08=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-4.c=0A@@=20-0,0=20+1,23=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20floating=20point=20type=20= automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A= +/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A= +long=20double=20result;=0A+=0A+long=20double=20foo()=0A+{=0A+=20=20= float=20temp1;=0A+=20=20double=20temp2;=0A+=20=20long=20double=20temp3;=0A= +=0A+=20=20result=20=3D=20temp1=20+=20temp2=20+=20temp3;=0A+=20=20return=20= result;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20scan-assembler=20"movss\[=20= \t\]+.LC0\\(%rip\\),=20%xmm0"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-assembler=20"movss\[=20\t\]+%xmm0"=20}=20}=20*/=0A+/*=20{=20= dg-final=20{=20scan-assembler=20"movsd\[=20\t\]+.LC1\\(%rip\\),=20%xmm0"=20= }=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-assembler=20"movsd\[=20= \t\]+%xmm0"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-assembler=20= ".long\[=20\t\]+2143289344"=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-assembler=20".long\[=20\t\]+2146959360"=20}=20}=20*/=0A+=0Adiff=20= --git=20a/gcc/testsuite/gcc.target/i386/auto-init-5.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-5.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..c24a6faf8836=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-5.c=0A@@=20-0,0=20+1,19=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20complex=20type=20automatic=20= variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A+/*=20{=20= dg-options=20"-ftrivial-auto-var-init=3Dzero=20-fdump-tree-gimple"=20}=20= */=0A+=0A+=0A+_Complex=20long=20double=20result;=0A+=0A+_Complex=20long=20= double=20foo()=0A+{=0A+=20=20_Complex=20float=20temp1;=0A+=20=20_Complex=20= double=20temp2;=0A+=20=20_Complex=20long=20double=20temp3;=0A+=0A+=20=20= result=20=3D=20temp1=20+=20temp2=20+=20temp3;=0A+=20=20return=20result;=0A= +}=0A+=0A+/*=20{=20dg-final=20{=20scan-assembler-times=20".long\\t0"=20= 14=20}=20}=20*/=0A+=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/i386/auto-init-6.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-6.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..3f17113e5c57=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-6.c=0A@@=20-0,0=20+1,22=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20complex=20type=20= automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20compile=20}=20*/=0A= +/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dpattern"=20}=20*/=0A+=0A= +=0A+_Complex=20long=20double=20result;=0A+=0A+_Complex=20long=20double=20= foo()=0A+{=0A+=20=20_Complex=20float=20temp1;=0A+=20=20_Complex=20double=20= temp2;=0A+=20=20_Complex=20long=20double=20temp3;=0A+=0A+=20=20result=20= =3D=20temp1=20+=20temp2=20+=20temp3;=0A+=20=20return=20result;=0A+}=0A+=0A= +/*=20{=20dg-final=20{=20scan-assembler-times=20".long\\t2143289344"=203=20= }=20}=20*/=0A+/*=20{=20dg-final=20{=20scan-assembler-times=20= ".long\\t2146959360"=202=20}=20}=20*/=0A+/*=20{=20dg-final=20{=20= scan-assembler-times=20".long\\t-1073741824"=202=20}=20}=20*/=0A+/*=20{=20= dg-final=20{=20scan-assembler-times=20".long\\t32767"=202=20}=20}=20*/=0A= +=0Adiff=20--git=20a/gcc/testsuite/gcc.target/i386/auto-init-7.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-7.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..ac27fbe92f4a=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-7.c=0A@@=20-0,0=20+1,32=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20array,=20union,=20and=20= structure=20type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20= compile=20}=20*/=0A+/*=20{=20dg-options=20"-ftrivial-auto-var-init=3Dzero=20= -fdump-rtl-expand"=20}=20*/=0A+=0A+struct=20S=0A+{=0A+=20=20int=20f1;=0A= +=20=20float=20f2;=0A+=20=20char=20f3[20];=0A+};=0A+=0A+union=20U=0A+{=0A= +=20=20char=20u1[5];=0A+=20=20int=20u2;=0A+=20=20float=20u3;=20=0A+};=0A= +=0A+double=20result;=0A+=0A+double=20foo()=0A+{=0A+=20=20int=20= temp1[3];=0A+=20=20double=20temp2[3];=0A+=20=20struct=20S=20temp3;=0A+=20= =20union=20U=20temp4;=0A+=20=20=0A+=20=20result=20=3D=20temp1[2]=20+=20= temp2[1]=20+=20temp3.f2=20+=20temp4.u3;=0A+=20=20return=20result;=0A+}=0A= +=0A+/*=20{=20dg-final=20{=20scan-rtl-dump-times=20"const_int=200"=208=20= "expand"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/i386/auto-init-8.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-8.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..ef5ab315acfe=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-8.c=0A@@=20-0,0=20+1,33=20@@=0A= +/*=20Verify=20pattern=20initialization=20for=20array,=20union,=20and=20= structure=20type=20automatic=20variables.=20=20*/=0A+/*=20{=20dg-do=20= compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dpattern=20-fdump-rtl-expand"=20}=20*/=0A+=0A= +struct=20S=0A+{=0A+=20=20int=20f1;=0A+=20=20float=20f2;=0A+=20=20char=20= f3[20];=0A+};=0A+=0A+union=20U=0A+{=0A+=20=20char=20u1[5];=0A+=20=20int=20= u2;=0A+=20=20float=20u3;=20=0A+};=0A+=0A+double=20result;=0A+=0A+double=20= foo()=0A+{=0A+=20=20int=20temp1[3];=0A+=20=20double=20temp2[3];=0A+=20=20= struct=20S=20temp3;=0A+=20=20union=20U=20temp4;=0A+=20=20=0A+=20=20= result=20=3D=20temp1[2]=20+=20temp2[1]=20+=20temp3.f2=20+=20temp4.u3;=0A= +=20=20return=20result;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-rtl-dump-times=20"0xffffffffaaaaaaaa"=204=20"expand"=20}=20}=20*/=0A= +/*=20{=20dg-final=20{=20scan-rtl-dump-times=20"0xffffffffffffffaa"=2026=20= "expand"=20}=20}=20*/=0Adiff=20--git=20= a/gcc/testsuite/gcc.target/i386/auto-init-9.c=20= b/gcc/testsuite/gcc.target/i386/auto-init-9.c=0Anew=20file=20mode=20= 100644=0Aindex=20000000000000..b4069797d939=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.target/i386/auto-init-9.c=0A@@=20-0,0=20+1,19=20@@=0A= +/*=20Verify=20zero=20initialization=20for=20structure=20type=20= automatic=20variables=20with=0A+=20=20=20padding.=20=20*/=0A+/*=20{=20= dg-do=20compile=20}=20*/=0A+/*=20{=20dg-options=20= "-ftrivial-auto-var-init=3Dzero"=20}=20*/=0A+=0A+struct=20test_aligned=20= {=0A+=20=20=20=20=20=20=20=20int=20internal1;=0A+=20=20=20=20=20=20=20=20= long=20long=20internal2;=0A+}=20__attribute__=20((aligned(64)));=0A+=0A= +int=20foo=20()=0A+{=0A+=20=20struct=20test_aligned=20var;=0A+=20=20= return=20var.internal1;=0A+}=0A+=0A+/*=20{=20dg-final=20{=20= scan-assembler-times=20"movq\t\\\$0,"=208=20}=20}=20*/=0A+=0A+=0Adiff=20= --git=20a/gcc/tree-cfg.c=20b/gcc/tree-cfg.c=0Aindex=20= f59a0c052008..8ffcc6675893=20100644=0A---=20a/gcc/tree-cfg.c=0A+++=20= b/gcc/tree-cfg.c=0A@@=20-3433,24=20+3433,56=20@@=20verify_gimple_call=20= (gcall=20*stmt)=0A=20=09}=0A=20=20=20=20=20}=0A=20=0A+=20=20/*=20For=20a=20= call=20to=20.DEFERRED_INIT,=20we=20should=20guarantee=20that=20the=20lhs=20= is=0A+=20=20=20=20=20the=20same=20as=20the=20first=20argument=20of=20the=20= call.=20=20*/=0A+=20=20if=20(gimple_call_internal_p=20(stmt,=20= IFN_DEFERRED_INIT))=0A+=20=20=20=20{=0A+=20=20=20=20=20=20tree=20arg0=20= =3D=20gimple_call_arg=20(stmt,=200);=0A+=20=20=20=20=20=20if=20= (TREE_CODE=20(lhs)=20=3D=3D=20SSA_NAME)=0A+=09lhs=20=3D=20SSA_NAME_VAR=20= (lhs);=0A+=20=20=20=20=20=20if=20(TREE_CODE=20(arg0)=20=3D=3D=20= SSA_NAME)=0A+=09arg0=20=3D=20SSA_NAME_VAR=20(arg0);=0A+=20=20=20=20=20=20= if=20(lhs=20!=3D=20arg0)=0A+=09{=0A+=09=20=20error=20("%=20= calls=20should=20have=20the=20same=20LHS=20as=20the=20"=0A+=09=09=20= "first=20argument");=0A+=09=20=20return=20true;=0A+=09}=0A+=20=20=20=20}=0A= +=0A+=20=20/*=20We=20will=20not=20verify=20the=20arguments=20for=20the=20= calls=20to=20.DEFERRED_INIT.=0A+=20=20=20=20=20Such=20call=20is=20not=20= a=20real=20call,=20just=20a=20placeholder=20for=20a=20later=0A+=20=20=20=20= =20initialization=20during=20expand=20phase.=0A+=20=20=20=20=20This=20is=20= mainly=20to=20avoid=20assertion=20failure=20for=20the=20following=0A+=20=20= =20=20=20case:=0A+=0A+=20=20=20=20=20uni_var=20=3D=20.DEFERRED_INIT=20= (uni_var,=20INIT_TYPE);=0A+=20=20=20=20=20foo=20(&uni_var);=0A+=0A+=20=20= =20=20=20in=20the=20above,=20the=20uninitialized=20auto=20variable=20= "uni_var"=20is=0A+=20=20=20=20=20addressable,=20therefore=20should=20not=20= be=20in=20registers,=20resulting=0A+=20=20=20=20=20the=20assertion=20= failure=20in=20the=20following=20argument=20verification.=20=20*/=0A+=20=20= if=20(gimple_call_internal_p=20(stmt,=20IFN_DEFERRED_INIT))=0A+=20=20=20=20= return=20false;=0A=20=20=20/*=20???=20=20The=20C=20frontend=20passes=20= unpromoted=20arguments=20in=20case=20it=0A=20=20=20=20=20=20didn't=20see=20= a=20function=20declaration=20before=20the=20call.=20=20So=20for=20now=0A=20= =20=20=20=20=20leave=20the=20call=20arguments=20mostly=20unverified.=20=20= Once=20we=20gimplify=0A=20=20=20=20=20=20unit-at-a-time=20we=20have=20a=20= chance=20to=20fix=20this.=20=20*/=0A=20=0A-=20=20for=20(i=20=3D=200;=20i=20= <=20gimple_call_num_args=20(stmt);=20++i)=0A-=20=20=20=20{=0A-=20=20=20=20= =20=20tree=20arg=20=3D=20gimple_call_arg=20(stmt,=20i);=0A-=20=20=20=20=20= =20if=20((is_gimple_reg_type=20(TREE_TYPE=20(arg))=0A-=09=20=20=20&&=20= !is_gimple_val=20(arg))=0A-=09=20=20||=20(!is_gimple_reg_type=20= (TREE_TYPE=20(arg))=0A-=09=20=20=20=20=20=20&&=20!is_gimple_lvalue=20= (arg)))=0A-=09{=0A-=09=20=20error=20("invalid=20argument=20to=20gimple=20= call");=0A-=09=20=20debug_generic_expr=20(arg);=0A-=09=20=20return=20= true;=0A-=09}=0A-=20=20=20=20}=0A+=20=20else=0A+=20=20=20=20for=20(i=20=3D= =200;=20i=20<=20gimple_call_num_args=20(stmt);=20++i)=0A+=20=20=20=20=20=20= {=0A+=09tree=20arg=20=3D=20gimple_call_arg=20(stmt,=20i);=0A+=09if=20= ((is_gimple_reg_type=20(TREE_TYPE=20(arg))=0A+=09=20=20=20=20=20&&=20= !is_gimple_val=20(arg))=0A+=09=20=20=20=20||=20(!is_gimple_reg_type=20= (TREE_TYPE=20(arg))=0A+=09=09&&=20!is_gimple_lvalue=20(arg)))=0A+=09=20=20= {=0A+=09=20=20=20=20error=20("invalid=20argument=20to=20gimple=20call");=0A= +=09=20=20=20=20debug_generic_expr=20(arg);=0A+=09=20=20=20=20return=20= true;=0A+=09=20=20}=0A+=20=20=20=20=20=20}=0A=20=0A=20=20=20return=20= false;=0A=20}=0Adiff=20--git=20a/gcc/tree-core.h=20b/gcc/tree-core.h=0A= index=20e457b917b98e..2e0e76ea8838=20100644=0A---=20a/gcc/tree-core.h=0A= +++=20b/gcc/tree-core.h=0A@@=20-1829,7=20+1829,7=20@@=20struct=20GTY(())=20= tree_decl_with_vis=20{=0A=20=20unsigned=20final=20:=201;=0A=20=20/*=20= Belong=20to=20FUNCTION_DECL=20exclusively.=20=20*/=0A=20=20unsigned=20= regdecl_flag=20:=201;=0A-=20/*=2014=20unused=20bits.=20*/=0A+=20/*=2014=20= unused=20bits.=20=20*/=0A=20=20/*=2032=20more=20unused=20on=2064=20bit=20= HW.=20*/=0A=20};=0A=20=0Adiff=20--git=20a/gcc/tree-sra.c=20= b/gcc/tree-sra.c=0Aindex=2098a6cacbe2ab..4c74df272141=20100644=0A---=20= a/gcc/tree-sra.c=0A+++=20b/gcc/tree-sra.c=0A@@=20-384,6=20+384,13=20@@=20= static=20struct=0A=20=0A=20=20=20/*=20Numbber=20of=20components=20= created=20when=20splitting=20aggregate=20parameters.=20=20*/=0A=20=20=20= int=20param_reductions_created;=0A+=0A+=20=20/*=20Number=20of=20= deferred_init=20calls=20that=20are=20modified.=20=20*/=0A+=20=20int=20= deferred_init;=0A+=0A+=20=20/*=20Number=20of=20deferred_init=20calls=20= that=20are=20created=20by=0A+=20=20=20=20=20= generate_subtree_deferred_init.=20=20*/=0A+=20=20int=20= subtree_deferred_init;=0A=20}=20sra_stats;=0A=20=0A=20static=20void=0A@@=20= -4070,6=20+4077,119=20@@=20get_repl_default_def_ssa_name=20(struct=20= access=20*racc,=20tree=20reg_type)=0A=20=20=20return=20= get_or_create_ssa_default_def=20(cfun,=20racc->replacement_decl);=0A=20}=0A= =20=0A+=0A+/*=20Generate=20statements=20to=20call=20.DEFERRED_INIT=20to=20= initialize=20scalar=20replacements=0A+=20=20=20of=20accesses=20within=20= a=20subtree=20ACCESS;=20all=20its=20children,=20siblings=20and=20their=0A= +=20=20=20children=20are=20to=20be=20processed.=0A+=20=20=20GSI=20is=20a=20= statement=20iterator=20used=20to=20place=20the=20new=20statements.=20=20= */=0A+static=20void=0A+generate_subtree_deferred_init=20(struct=20access=20= *access,=0A+=09=09=09=09enum=20auto_init_type=20init_type,=0A+=09=09=09=09= gimple_stmt_iterator=20*gsi,=0A+=09=09=09=09location_t=20loc)=0A+{=0A+=20= =20do=0A+=20=20=20=20{=0A+=20=20=20=20=20=20if=20= (access->grp_to_be_replaced)=0A+=09{=0A+=09=20=20tree=20repl=20=3D=20= get_access_replacement=20(access);=0A+=09=20=20tree=20init_type_node=0A+=09= =20=20=20=20=3D=20build_int_cst=20(integer_type_node,=20(int)=20= init_type);=0A+=09=20=20gimple=20*call=20=3D=20= gimple_build_call_internal=20(IFN_DEFERRED_INIT,=202,=0A+=09=09=09=09=09=09= =20=20=20=20=20repl,=20init_type_node);=0A+=09=20=20gimple_call_set_lhs=20= (call,=20repl);=0A+=09=20=20gsi_insert_before=20(gsi,=20call,=20= GSI_SAME_STMT);=0A+=09=20=20update_stmt=20(call);=0A+=09=20=20= gimple_set_location=20(call,=20loc);=0A+=0A+=09=20=20= sra_stats.subtree_deferred_init++;=0A+=09}=0A+=20=20=20=20=20=20else=20= if=20(access->grp_to_be_debug_replaced)=0A+=09{=0A+=09=20=20tree=20drepl=20= =3D=20get_access_replacement=20(access);=0A+=09=20=20tree=20= init_type_node=0A+=09=20=20=20=20=3D=20build_int_cst=20= (integer_type_node,=20(int)=20init_type);=0A+=09=20=20tree=20call=20=3D=20= build_call_expr_internal_loc=0A+=09=09=20=20=20=20=20(UNKNOWN_LOCATION,=20= IFN_DEFERRED_INIT,=0A+=09=09=20=20=20=20=20=20TREE_TYPE=20(drepl),=202,=20= drepl,=20init_type_node);=0A+=09=20=20gdebug=20*ds=20=3D=20= gimple_build_debug_bind=20(drepl,=20call,=0A+=09=09=09=09=09=09gsi_stmt=20= (*gsi));=0A+=09=20=20gsi_insert_before=20(gsi,=20ds,=20GSI_SAME_STMT);=0A= +=09}=0A+=20=20=20=20=20=20if=20(access->first_child)=0A+=09= generate_subtree_deferred_init=20(access->first_child,=20init_type,=0A+=09= =09=09=09=09gsi,=20loc);=0A+=0A+=20=20=20=20=20=20access=20=3D=20access=20= ->next_sibling;=0A+=20=20=20=20}=0A+=20=20while=20(access);=0A+}=0A+=0A= +/*=20For=20a=20call=20to=20.DEFERRED_INIT:=0A+=20=20=20var=20=3D=20= .DEFERRED_INIT=20(var,=20init_type);=0A+=20=20=20examine=20the=20LHS=20= variable=20VAR=20and=20replace=20it=20with=20a=20scalar=20replacement=20= if=0A+=20=20=20there=20is=20one,=20also=20replace=20the=20RHS=20call=20= to=20a=20call=20to=20.DEFERRED_INIT=20of=0A+=20=20=20the=20corresponding=20= scalar=20relacement=20variable.=20=20Examine=20the=20subtree=20and=0A+=20= =20=20do=20the=20scalar=20replacements=20in=20the=20subtree=20too.=20=20= STMT=20is=20the=20call,=20GSI=20is=0A+=20=20=20the=20statment=20iterator=20= to=20place=20newly=20created=20statement.=20=20*/=0A+=0A+static=20enum=20= assignment_mod_result=0A+sra_modify_deferred_init=20(gimple=20*stmt,=20= gimple_stmt_iterator=20*gsi)=0A+{=0A+=20=20tree=20lhs=20=3D=20= gimple_call_lhs=20(stmt);=0A+=20=20tree=20arg0=20=3D=20gimple_call_arg=20= (stmt,=200);=0A+=20=20enum=20auto_init_type=20init_type=0A+=20=20=20=20=3D= =20(enum=20auto_init_type)=20TREE_INT_CST_LOW=20(gimple_call_arg=20= (stmt,=201));=0A+=20=20struct=20access=20*lhs_access=20=3D=20= get_access_for_expr=20(lhs);=0A+=20=20struct=20access=20*arg0_access=20=3D= =20get_access_for_expr=20(arg0);=0A+=20=20if=20(!lhs_access=20&&=20= !arg0_access)=0A+=20=20=20=20return=20SRA_AM_NONE;=0A+=20=20gcc_assert=20= (lhs_access=20&&=20arg0_access);=0A+=0A+=20=20location_t=20loc=20=3D=20= gimple_location=20(stmt);=0A+=0A+=20=20if=20= (lhs_access->grp_to_be_replaced)=0A+=20=20=20=20{=0A+=20=20=20=20=20=20= tree=20lhs_repl=20=3D=20get_access_replacement=20(lhs_access);=0A+=20=20=20= =20=20=20tree=20arg0_repl=20=3D=20get_access_replacement=20= (arg0_access);=0A+=20=20=20=20=20=20if=20(TREE_CODE=20(lhs_repl)=20=3D=3D=20= SSA_NAME)=0A+=09{=0A+=09=20=20gcc_assert=20(TREE_CODE=20(arg0_repl)=20=3D=3D= =20SSA_NAME);=0A+=09=20=20gcc_assert=20(SSA_NAME_VAR=20(lhs_repl)=20=3D=3D= =20SSA_NAME_VAR=20(arg0_repl));=0A+=09}=0A+=20=20=20=20=20=20else=0A+=09= gcc_assert=20(lhs_repl=20=3D=3D=20arg0_repl);=0A+=20=20=20=20=20=20= gimple_call_set_lhs=20(stmt,=20lhs_repl);=0A+=20=20=20=20=20=20= gimple_call_set_arg=20(stmt,=200,=20arg0_repl);=0A+=20=20=20=20=20=20= sra_stats.deferred_init++;=0A+=20=20=20=20}=0A+=20=20else=20if=20= (lhs_access->grp_to_be_debug_replaced)=0A+=20=20=20=20{=0A+=20=20=20=20=20= =20tree=20lhs_drepl=20=3D=20get_access_replacement=20(lhs_access);=0A+=20= =20=20=20=20=20tree=20init_type_node=0A+=09=20=20=20=3D=20build_int_cst=20= (integer_type_node,=20(int)=20init_type);=0A+=20=20=20=20=20=20tree=20= call=20=3D=20build_call_expr_internal_loc=0A+=09=09=20=20= (UNKNOWN_LOCATION,=20IFN_DEFERRED_INIT,=0A+=09=09=20=20TREE_TYPE=20= (lhs_drepl),=202,=20lhs_drepl,=20init_type_node);=0A+=20=20=20=20=20=20= gdebug=20*ds=20=3D=20gimple_build_debug_bind=20(lhs_drepl,=20call,=0A+=09= =09=09=09=09=20=20=20=20gsi_stmt=20(*gsi));=0A+=20=20=20=20=20=20= gsi_insert_before=20(gsi,=20ds,=20GSI_SAME_STMT);=0A+=20=20=20=20}=0A+=0A= +=20=20if=20(lhs_access->first_child)=0A+=20=20=20=20= generate_subtree_deferred_init=20(lhs_access->first_child,=0A+=09=09=09=09= =20=20=20=20init_type,=20gsi,=20loc);=0A+=20=20if=20= (lhs_access->grp_covered)=0A+=20=20=20=20{=0A+=20=20=20=20=20=20= unlink_stmt_vdef=20(stmt);=0A+=20=20=20=20=20=20gsi_remove=20(gsi,=20= true);=0A+=20=20=20=20=20=20release_defs=20(stmt);=0A+=20=20=20=20=20=20= return=20SRA_AM_REMOVED;=0A+=20=20=20=20}=0A+=0A+=20=20return=20= SRA_AM_MODIFIED;=0A+}=0A+=0A=20/*=20Examine=20both=20sides=20of=20the=20= assignment=20statement=20pointed=20to=20by=20STMT,=20replace=0A=20=20=20=20= them=20with=20a=20scalare=20replacement=20if=20there=20is=20one=20and=20= generate=20copying=20of=0A=20=20=20=20replacements=20if=20scalarized=20= aggregates=20have=20been=20used=20in=20the=20assignment.=20=20GSI=0A@@=20= -4434,17=20+4554,27=20@@=20sra_modify_function_body=20(void)=0A=20=09=20=20= =20=20=20=20break;=0A=20=0A=20=09=20=20=20=20case=20GIMPLE_CALL:=0A-=09=20= =20=20=20=20=20/*=20Operands=20must=20be=20processed=20before=20the=20= lhs.=20=20*/=0A-=09=20=20=20=20=20=20for=20(i=20=3D=200;=20i=20<=20= gimple_call_num_args=20(stmt);=20i++)=0A+=09=20=20=20=20=20=20/*=20= Handle=20calls=20to=20.DEFERRED_INIT=20specially.=20=20*/=0A+=09=20=20=20= =20=20=20if=20(gimple_call_internal_p=20(stmt,=20IFN_DEFERRED_INIT))=0A=20= =09=09{=0A-=09=09=20=20t=20=3D=20gimple_call_arg_ptr=20(stmt,=20i);=0A-=09= =09=20=20modified=20|=3D=20sra_modify_expr=20(t,=20&gsi,=20false);=0A+=09= =09=20=20assign_result=20=3D=20sra_modify_deferred_init=20(stmt,=20= &gsi);=0A+=09=09=20=20modified=20|=3D=20assign_result=20=3D=3D=20= SRA_AM_MODIFIED;=0A+=09=09=20=20deleted=20=3D=20assign_result=20=3D=3D=20= SRA_AM_REMOVED;=0A=20=09=09}=0A-=0A-=09=20=20=20=20=20=20if=20= (gimple_call_lhs=20(stmt))=0A+=09=20=20=20=20=20=20else=0A=20=09=09{=0A-=09= =09=20=20t=20=3D=20gimple_call_lhs_ptr=20(stmt);=0A-=09=09=20=20modified=20= |=3D=20sra_modify_expr=20(t,=20&gsi,=20true);=0A+=09=09=20=20/*=20= Operands=20must=20be=20processed=20before=20the=20lhs.=20=20*/=0A+=09=09=20= =20for=20(i=20=3D=200;=20i=20<=20gimple_call_num_args=20(stmt);=20i++)=0A= +=09=09=20=20=20=20{=0A+=09=09=20=20=20=20=20=20t=20=3D=20= gimple_call_arg_ptr=20(stmt,=20i);=0A+=09=09=20=20=20=20=20=20modified=20= |=3D=20sra_modify_expr=20(t,=20&gsi,=20false);=0A+=09=09=20=20=20=20}=0A= +=0A+=09=20=20=20=20=20=20=09=20=20if=20(gimple_call_lhs=20(stmt))=0A+=09= =09=20=20=20=20{=0A+=09=09=20=20=20=20=20=20t=20=3D=20= gimple_call_lhs_ptr=20(stmt);=0A+=09=09=20=20=20=20=20=20modified=20|=3D=20= sra_modify_expr=20(t,=20&gsi,=20true);=0A+=09=09=20=20=20=20}=0A=20=09=09= }=0A=20=09=20=20=20=20=20=20break;=0A=20=0Adiff=20--git=20= a/gcc/tree-ssa-structalias.c=20b/gcc/tree-ssa-structalias.c=0Aindex=20= cf653be8b6df..547df1c7b41d=20100644=0A---=20a/gcc/tree-ssa-structalias.c=0A= +++=20b/gcc/tree-ssa-structalias.c=0A@@=20-4864,6=20+4864,9=20@@=20= find_func_aliases_for_call=20(struct=20function=20*fn,=20gcall=20*t)=0A=20= =20=20=20=20=20=20&&=20find_func_aliases_for_builtin_call=20(fn,=20t))=0A= =20=20=20=20=20return;=0A=20=0A+=20=20if=20(gimple_call_internal_p=20(t,=20= IFN_DEFERRED_INIT))=0A+=20=20=20=20return;=0A+=0A=20=20=20fi=20=3D=20= get_fi_for_callee=20(t);=0A=20=20=20if=20(!in_ipa_mode=0A=20=20=20=20=20=20= =20||=20(fi->decl=20&&=20fndecl=20&&=20!fi->is_fn_info))=0Adiff=20--git=20= a/gcc/tree-ssa-uninit.c=20b/gcc/tree-ssa-uninit.c=0Aindex=20= 516a7bd2c992..c86c59cbabd4=20100644=0A---=20a/gcc/tree-ssa-uninit.c=0A= +++=20b/gcc/tree-ssa-uninit.c=0A@@=20-135,6=20+135,42=20@@=20warn_uninit=20= (enum=20opt_code=20wc,=20tree=20t,=20tree=20expr,=20tree=20var,=0A=20=20=20= if=20(is_gimple_assign=20(context)=0A=20=20=20=20=20=20=20&&=20= gimple_assign_rhs_code=20(context)=20=3D=3D=20COMPLEX_EXPR)=0A=20=20=20=20= =20return;=0A+=0A+=20=20/*=20Ignore=20REALPART_EXPR=20or=20IMAGPART_EXPR=20= if=20its=20operand=20is=20a=20call=20to=0A+=20=20=20=20=20= .DEFERRED_INIT.=20=20This=20is=20for=20handling=20the=20following=20case=20= correctly:=0A+=0A+=20=201=20typedef=20_Complex=20float=20C;=0A+=20=202=20= C=20foo(int=20cond)=0A+=20=203=20{=0A+=20=204=20=20=20C=20f;=0A+=20=205=20= =20=20__imag__=20f=20=3D=200;=0A+=20=206=20=20=20if=20(cond)=0A+=20=207=20= =20=20=20=20{=0A+=20=208=20=20=20=20=20=20=20__real__=20f=20=3D=201;=0A+=20= =209=20=20=20=20=20=20=20return=20f;=0A+=2010=20=20=20=20=20}=0A+=2011=20= =20=20return=20f;=0A+=2012=20}=0A+=0A+=20=20=20=20with=20= -ftrivial-auto-var-init,=20compiler=20will=20insert=20the=20following=0A= +=20=20=20=20artificial=20initialization=20at=20line=204:=0A+=20=20f=20=3D= =20.DEFERRED_INIT=20(f,=202);=0A+=20=20_1=20=3D=20REALPART_EXPR=20;=0A= +=0A+=20=20=20=20without=20the=20following=20special=20handling,=20_1=20= =3D=20REALPART_EXPR=20=20will=0A+=20=20=20=20be=20treated=20as=20the=20= uninitialized=20use=20point,=20which=20is=20incorrect.=20(the=0A+=20=20=20= =20real=20uninitialized=20use=20point=20is=20at=20line=2011).=20=20*/=0A= +=20=20if=20(is_gimple_assign=20(context)=0A+=20=20=20=20=20=20&&=20= (gimple_assign_rhs_code=20(context)=20=3D=3D=20REALPART_EXPR=0A+=09=20=20= ||=20gimple_assign_rhs_code=20(context)=20=3D=3D=20IMAGPART_EXPR))=0A+=20= =20=20=20{=0A+=20=20=20=20=20=20tree=20v=20=3D=20gimple_assign_rhs1=20= (context);=0A+=20=20=20=20=20=20if=20(TREE_CODE=20(TREE_OPERAND=20(v,=20= 0))=20=3D=3D=20SSA_NAME=0A+=09=20=20&&=20gimple_call_internal_p=20= (SSA_NAME_DEF_STMT=20(TREE_OPERAND=20(v,=200)),=0A+=09=09=09=09=20=20=20=20= =20IFN_DEFERRED_INIT))=0A+=09return;=0A+=20=20=20=20}=0A+=0A=20=20=20if=20= (!has_undefined_value_p=20(t))=0A=20=20=20=20=20return;=0A=20=0A@@=20= -209,6=20+245,19=20@@=20check_defs=20(ao_ref=20*ref,=20tree=20vdef,=20= void=20*data_)=0A=20{=0A=20=20=20check_defs_data=20*data=20=3D=20= (check_defs_data=20*)data_;=0A=20=20=20gimple=20*def_stmt=20=3D=20= SSA_NAME_DEF_STMT=20(vdef);=0A+=0A+=20=20/*=20Ignore=20the=20vdef=20if=20= the=20definition=20statement=20is=20a=20call=0A+=20=20=20=20=20to=20= .DEFERRED_INIT=20function.=20=20*/=0A+=20=20if=20(gimple_call_internal_p=20= (def_stmt,=20IFN_DEFERRED_INIT))=0A+=20=20=20=20return=20false;=0A+=0A+=20= =20/*=20Ignore=20the=20vdef=20if=20the=20definition=20statement=20is=20a=20= call=0A+=20=20=20=20=20to=20builtin_memset=20function=20that=20is=20= added=20for=20uninitialized=0A+=20=20=20=20=20auto=20variable=20= initialization.=20=20*/=0A+=20=20if=20(gimple_call_builtin_p=20= (def_stmt,=20BUILT_IN_MEMSET)=0A+=20=20=20=20=20=20&&=20= gimple_call_memset_for_uninit_p=20(def_stmt))=0A+=20=20=20=20return=20= false;=0A+=0A=20=20=20/*=20If=20this=20is=20a=20clobber=20then=20if=20it=20= is=20not=20a=20kill=20walk=20past=20it.=20=20*/=0A=20=20=20if=20= (gimple_clobber_p=20(def_stmt))=0A=20=20=20=20=20{=0A@@=20-611,6=20= +660,12=20@@=20warn_uninitialized_vars=20(bool=20wmaybe_uninit)=0A=20=09=20= =20ssa_op_iter=20op_iter;=0A=20=09=20=20tree=20use;=0A=20=0A+=09=20=20/*=20= The=20call=20is=20an=20artificial=20use,=20will=20not=20provide=20= meaningful=0A+=09=20=20=20=20=20error=20message.=20=20If=20the=20result=20= of=20the=20call=20is=20used=20somewhere=0A+=09=20=20=20=20=20else,=20we=20= warn=20there=20instead.=20=20*/=0A+=09=20=20if=20(gimple_call_internal_p=20= (stmt,=20IFN_DEFERRED_INIT))=0A+=09=20=20=20=20continue;=0A+=0A=20=09=20=20= if=20(is_gimple_debug=20(stmt))=0A=20=09=20=20=20=20continue;=0A=20=0A= diff=20--git=20a/gcc/tree-ssa.c=20b/gcc/tree-ssa.c=0Aindex=20= a575979aa139..0c285f7b4f0f=20100644=0A---=20a/gcc/tree-ssa.c=0A+++=20= b/gcc/tree-ssa.c=0A@@=20-1325,6=20+1325,46=20@@=20ssa_undefined_value_p=20= (tree=20t,=20bool=20partial)=0A=20=20=20if=20(gimple_nop_p=20(def_stmt))=0A= =20=20=20=20=20return=20true;=0A=20=0A+=20=20/*=20The=20value=20is=20= undefined=20if=20the=20definition=20statement=20is=20a=20call=0A+=20=20=20= =20=20to=20.DEFERRED_INIT=20function.=20=20*/=0A+=20=20if=20= (gimple_call_internal_p=20(def_stmt,=20IFN_DEFERRED_INIT))=0A+=20=20=20=20= return=20true;=0A+=0A+=20=20/*=20The=20value=20is=20partially=20= undefined=20if=20the=20definition=20statement=20is=0A+=20=20=20=20=20a=20= REALPART_EXPR=20or=20IMAGPART_EXPR=20and=20its=20operand=20is=20defined=20= by=0A+=20=20=20=20=20the=20call=20to=20.DEFERRED_INIT=20function.=20=20= This=20is=20for=20handling=20the=0A+=20=20=20=20=20following=20case:=0A+=0A= +=20=201=20typedef=20_Complex=20float=20C;=0A+=20=202=20C=20foo(int=20= cond)=0A+=20=203=20{=0A+=20=204=20=20=20C=20f;=0A+=20=205=20=20=20= __imag__=20f=20=3D=200;=0A+=20=206=20=20=20if=20(cond)=0A+=20=207=20=20=20= =20=20{=0A+=20=208=20=20=20=20=20=20=20__real__=20f=20=3D=201;=0A+=20=20= 9=20=20=20=20=20=20=20return=20f;=0A+=2010=20=20=20=20=20}=0A+=2011=20=20= =20return=20f;=0A+=2012=20}=0A+=0A+=20=20=20=20with=20= -ftrivial-auto-var-init,=20compiler=20will=20insert=20the=20following=0A= +=20=20=20=20artificial=20initialization:=0A+=20=20f=20=3D=20= .DEFERRED_INIT=20(f,=202);=0A+=20=20_1=20=3D=20REALPART_EXPR=20;=0A+=0A= +=20=20=20=20we=20should=20treat=20the=20definition=20_1=20=3D=20= REALPART_EXPR=20=20as=20undefined.=20=20*/=0A+=20=20if=20(partial=20= &&=20is_gimple_assign=20(def_stmt)=0A+=20=20=20=20=20=20&&=20= (gimple_assign_rhs_code=20(def_stmt)=20=3D=3D=20REALPART_EXPR=0A+=09=20=20= ||=20gimple_assign_rhs_code=20(def_stmt)=20=3D=3D=20IMAGPART_EXPR))=0A+=20= =20=20=20{=0A+=20=20=20=20=20=20tree=20real_imag_part=20=3D=20= TREE_OPERAND=20(gimple_assign_rhs1=20(def_stmt),=200);=0A+=20=20=20=20=20= =20if=20(TREE_CODE=20(real_imag_part)=20=3D=3D=20SSA_NAME=0A+=09=20&&=20= gimple_call_internal_p=20(SSA_NAME_DEF_STMT=20(real_imag_part),=0A+=09=09= =09=09=20=20=20=20IFN_DEFERRED_INIT))=0A+=09return=20true;=0A+=20=20=20=20= }=0A+=0A=20=20=20/*=20Check=20if=20the=20complex=20was=20not=20only=20= partially=20defined.=20=20*/=0A=20=20=20if=20(partial=20&&=20= is_gimple_assign=20(def_stmt)=0A=20=20=20=20=20=20=20&&=20= gimple_assign_rhs_code=20(def_stmt)=20=3D=3D=20COMPLEX_EXPR)=0Adiff=20= --git=20a/gcc/tree.c=20b/gcc/tree.c=0Aindex=2002ce5ddcd491..c320781befec=20= 100644=0A---=20a/gcc/tree.c=0A+++=20b/gcc/tree.c=0A@@=20-2529,6=20= +2529,161=20@@=20build_zero_cst=20(tree=20type)=0A=20=20=20=20=20}=0A=20= }=0A=20=0A+/*=20Build=20pattern=20constant=20of=20type=20TYPE.=20=20This=20= is=20used=20for=20initializing=0A+=20=20=20auto=20variables.=20=20*/=0A+=0A= +tree=0A+build_pattern_cst_for_auto_init=20(tree=20type)=0A+{=0A+=20=20= /*=20The=20following=20value=20is=20a=20guaranteed=20unmappable=20= pointer=20value=20and=20has=20a=0A+=20=20=20=20=20repeated=20= byte-pattern=20which=20makes=20it=20easier=20to=20synthesize.=20=20We=20= use=20it=20for=0A+=20=20=20=20=20pointers=20as=20well=20as=20integers=20= so=20that=20aggregates=20are=20likely=20to=20be=0A+=20=20=20=20=20= initialized=20with=20this=20repeated=20value.=20=20*/=0A+=20=20uint64_t=20= largevalue=20=3D=200xAAAAAAAAAAAAAAAAull;=0A+=20=20/*=20For=2032-bit=20= platforms=20it's=20a=20bit=20trickier=20because,=20across=20systems,=20= only=20the=0A+=20=20=20=20=20zero=20page=20can=20reasonably=20be=20= expected=20to=20be=20unmapped,=20and=20even=20then=20we=20need=0A+=20=20=20= =20=20a=20very=20low=20address.=20=20We=20use=20a=20smaller=20value,=20= and=20that=20value=20sadly=20doesn't=0A+=20=20=20=20=20have=20a=20= repeated=20byte-pattern.=20=20We=20don't=20use=20it=20for=20integers.=20=20= */=0A+=20=20uint32_t=20smallvalue=20=3D=200x000000AA;=0A+=0A+=20=20= switch=20(TREE_CODE=20(type))=0A+=20=20=20=20{=0A+=20=20=20=20case=20= BOOLEAN_TYPE:=0A+=20=20=20=20=20=20/*=20We=20think=20that=20initializing=20= the=20boolean=20variable=20to=200=20other=20than=201=0A+=09=20is=20= better=20even=20for=20pattern=20initialization.=20=20*/=0A+=20=20=20=20=20= =20return=20build_zero_cst=20(type);=0A+=20=20=20=20case=20INTEGER_TYPE:=0A= +=20=20=20=20case=20ENUMERAL_TYPE:=0A+=20=20=20=20=20=20{=0A+=09unsigned=20= char=20ptr[16]=0A+=09=20=20=3D=20{0xAA,=200xAA,=200xAA,=200xAA,=200xAA,=20= 0xAA,=200xAA,=200xAA,=0A+=09=20=20=20=20=200xAA,=200xAA,=200xAA,=200xAA,=20= 0xAA,=200xAA,=200xAA,=200xAA};=0A+=09int=20total_bytes=20=3D=20= GET_MODE_SIZE=20(SCALAR_INT_TYPE_MODE=20(type));=0A+=09wide_int=20result=20= =3D=20wi::from_buffer=20(ptr,=20total_bytes);=0A+=09return=20= wide_int_to_tree=20(type,=20result);=0A+=20=20=20=20=20=20}=0A+=20=20=20=20= case=20POINTER_TYPE:=0A+=20=20=20=20case=20OFFSET_TYPE:=0A+=20=20=20=20= case=20REFERENCE_TYPE:=0A+=20=20=20=20case=20NULLPTR_TYPE:=0A+=20=20=20=20= =20=20{=0A+=09poly_uint64=20intvalue;=0A+=0A+=09if=20(POINTER_SIZE=20=3D=3D= =2064)=0A+=09=20=20intvalue=20=3D=20largevalue;=0A+=09else=0A+=09=20=20= intvalue=20=3D=20smallvalue;=0A+=09return=20build_int_cstu=20(type,=20= intvalue);=0A+=20=20=20=20=20=20}=0A+=20=20=20=20case=20REAL_TYPE:=0A+=20= =20=20=20=20=20{=0A+=09REAL_VALUE_TYPE=20rnan;=0A+=09machine_mode=20mode=20= =3D=20TYPE_MODE=20(type);=0A+=0A+=09/*=20create=20an=20quiet=20NAN=20for=20= REAL=20TYPE.=0A+=09=20=20=20if=20failed,=20fallback=20to=20MAX_FLOAT=20= instead.=20=20*/=0A+=09if=20(!real_nan=20(&rnan,=20"",=201,=20mode))=0A+=09= =20=20{=0A+=09=20=20=20=20char=20buf[128];=0A+=20=0A+=09=20=20=20=20= get_max_float=20(REAL_MODE_FORMAT=20(mode),=20buf,=20sizeof=20(buf),=20= false);=0A+=09=20=20=20=20real_from_string=20(&rnan,=20buf);=0A+=09=20=20= }=0A+=09return=20build_real=20(type,=20rnan);=0A+=20=20=20=20=20=20}=0A+=20= =20=20=20case=20FIXED_POINT_TYPE:=0A+=20=20=20=20=20=20{=0A+=09= FIXED_VALUE_TYPE=20fixed;=0A+=09fixed_from_string=20(&fixed,=20= "0xFFFFFFFFFFFFFFFF",=0A+=09=09=09=20=20=20SCALAR_TYPE_MODE=20(type));=0A= +=09return=20build_fixed=20(type,=20fixed);=0A+=20=20=20=20=20=20}=0A+=20= =20=20=20case=20VECTOR_TYPE:=0A+=20=20=20=20=20=20{=0A+=09tree=20scalar=20= =3D=20build_pattern_cst_for_auto_init=20(TREE_TYPE=20(type));=0A+=09= return=20build_vector_from_val=20(type,=20scalar);=0A+=20=20=20=20=20=20= }=0A+=20=20=20=20case=20COMPLEX_TYPE:=0A+=20=20=20=20=20=20{=0A+=09tree=20= element=20=3D=20build_pattern_cst_for_auto_init=20(TREE_TYPE=20(type));=0A= +=09return=20build_complex=20(type,=20element,=20element);=0A+=20=20=20=20= =20=20}=0A+=20=20=20=20case=20RECORD_TYPE:=0A+=20=20=20=20=20=20{=0A+=09= tree=20field;=0A+=09tree=20field_value;=0A+=09vec=20*v=20=3D=20NULL;=0A+=09for=20(field=3D=20TYPE_FIELDS=20(type);=20= field;=20field=20=3D=20DECL_CHAIN=20(field))=0A+=09=20=20{=0A+=09=20=20=20= =20if=20(TREE_CODE=20(field)=20!=3D=20FIELD_DECL)=0A+=09=20=20=20=20=20=20= continue;=0A+=09=20=20=20=20/*=20If=20the=20field=20is=20a=20flexible=20= array=20member,=20it=20should=20be=20the=20last=0A+=09=20=20=20=20=20=20=20= field=20of=20the=20record,=20and=20no=20need=20to=20initialize=20it.=20=20= */=0A+=09=20=20=20=20if=20(TREE_CODE=20(TREE_TYPE=20(field))=20=3D=3D=20= ARRAY_TYPE=0A+=09=09&&=20TYPE_SIZE=20(TREE_TYPE=20(field))=20=3D=3D=20= NULL_TREE=0A+=09=09&&=20((TYPE_DOMAIN=20(TREE_TYPE=20(field))=20!=3D=20= NULL_TREE=0A+=09=09=20=20=20=20&&=20TYPE_MAX_VALUE=20(TYPE_DOMAIN=20= (TREE_TYPE=20(field)))=20=0A+=09=09=09=09=20=20=20=20=20=20=20=3D=3D=20= NULL_TREE)=0A+=09=09=20=20=20||=20TYPE_DOMAIN=20(TREE_TYPE=20(field))=20= =3D=3D=20NULL_TREE))=0A+=09=20=20=20=20=20=20continue;=0A+=09=20=20=20=20= field_value=20=3D=20build_pattern_cst_for_auto_init=20(TREE_TYPE=20= (field));=0A+=09=20=20=20=20CONSTRUCTOR_APPEND_ELT=20(v,=20field,=20= field_value);=0A+=09=20=20}=0A+=09return=20build_constructor=20(type,=20= v);=0A+=20=20=20=20=20=20}=0A+=20=20=20=20case=20UNION_TYPE:=0A+=20=20=20= =20case=20QUAL_UNION_TYPE:=0A+=20=20=20=20=20=20{=0A+=09tree=20field,=20= max_field=20=3D=20NULL;=0A+=09unsigned=20max_size=20=3D=200;=0A+=09tree=20= field_value;=0A+=09vec=20*v=20=3D=20NULL;=0A+=09= /*=20Find=20the=20field=20with=20the=20largest=20size.=20=20*/=0A+=09for=20= (field=20=3D=20TYPE_FIELDS=20(type);=20field;=20field=20=3D=20DECL_CHAIN=20= (field))=0A+=09=20=20{=0A+=09=20=20=20=20if=20(TREE_CODE=20(field)=20!=3D=20= FIELD_DECL)=0A+=09=20=20=20=20=20=20continue;=0A+=09=20=20=20=20if=20= (tree_fits_uhwi_p=20(TYPE_SIZE_UNIT=20(TREE_TYPE=20(field))))=0A+=09=20=20= =20=20=20=20if=20(tree_to_uhwi=20(TYPE_SIZE_UNIT=20(TREE_TYPE=20= (field)))=20>=3D=20max_size)=0A+=09=20=20=20=20=20=20{=0A+=09=09max_size=20= =3D=20tree_to_uhwi=20(TYPE_SIZE_UNIT=20(TREE_TYPE=20(field)));=0A+=09=09= max_field=20=3D=20field;=0A+=09=20=20=20=20=20=20}=0A+=09=20=20}=0A+=09= if=20(max_field)=0A+=09=20=20{=0A+=09=20=20=20=20field_value=0A+=09=20=20= =20=20=20=20=3D=20build_pattern_cst_for_auto_init=20(TREE_TYPE=20= (max_field));=0A+=09=20=20=20=20CONSTRUCTOR_APPEND_ELT=20(v,=20= max_field,=20field_value);=0A+=09=20=20}=0A+=09return=20= build_constructor=20(type,=20v);=0A+=20=20=20=20=20=20}=0A+=20=20=20=20= case=20ARRAY_TYPE:=0A+=20=20=20=20=20=20{=0A+=09vec=20*elts=20=3D=20NULL;=0A+=09tree=20element=20=3D=20= build_pattern_cst_for_auto_init=20(TREE_TYPE=20(type));=0A+=09tree=20= nelts=20=3D=20array_type_nelts=20(type);=0A+=09if=20(nelts=20&&=20= tree_fits_uhwi_p=20(nelts))=0A+=09=20=20{=0A+=09=20=20=20=20unsigned=20= HOST_WIDE_INT=20n=20=3D=20tree_to_uhwi=20(nelts)=20+=201;=0A+=09=20=20=20= =20for=20(unsigned=20int=20i=20=3D=200;=20i=20<=20n;=20i++)=0A+=09=20=20=20= =20=20=20CONSTRUCTOR_APPEND_ELT=20(elts,=20NULL_TREE,=20element);=0A+=09=20= =20=20=20return=20build_constructor=20(type,=20elts);=0A+=09=20=20}=0A+=09= /*=20Variable=20length=20array=20should=20not=20be=20here.=20=20*/=0A+=09= gcc_unreachable=20();=0A+=20=20=20=20=20=20}=0A+=20=20=20=20default:=0A+=20= =20=20=20=20=20if=20(!AGGREGATE_TYPE_P=20(type))=0A+=09return=0A+=09=20=20= fold_convert=20(type,=0A+=09=09=09build_pattern_cst_for_auto_init=20= (unsigned_type_node));=0A+=20=20=20=20=20=20else=0A+=09gcc_unreachable=20= ();=0A+=0A+=20=20=20=20}=0A+}=0A+=0A=20=0A=20/*=20Build=20a=20BINFO=20= with=20LEN=20language=20slots.=20=20*/=0A=20=0A@@=20-11944,6=20+12099,72=20= @@=20lower_bound_in_type=20(tree=20outer,=20tree=20inner)=0A=20=20=20=20=20= }=0A=20}=0A=20=0A+/*=20Returns=20true=20when=20the=20given=20TYPE=20has=20= padding=20inside=20it.=0A+=20=20=20return=20false=20otherwise.=20=20*/=0A= +bool=0A+type_has_padding=20(tree=20type)=0A+{=0A+=20=20switch=20= (TREE_CODE=20(type))=0A+=20=20=20=20{=0A+=20=20=20=20case=20RECORD_TYPE:=0A= +=20=20=20=20=20=20{=0A+=09unsigned=20HOST_WIDE_INT=20record_size=0A+=09=20= =20=3D=20tree_to_uhwi=20(TYPE_SIZE_UNIT=20(type));=0A+=09unsigned=20= HOST_WIDE_INT=20size_sofar=20=3D=200;=0A+=0A+=09for=20(tree=20field=3D=20= TYPE_FIELDS=20(type);=20field;=20field=20=3D=20DECL_CHAIN=20(field))=0A+=09= =20=20{=0A+=09=20=20=20=20if=20(TREE_CODE=20(field)=20!=3D=20FIELD_DECL)=0A= +=09=20=20=20=20=20=20continue;=0A+=09=20=20=20=20unsigned=20= HOST_WIDE_INT=20cur_off=20=3D=20int_byte_position=20(field);=0A+=09=20=20= =20=20if=20(size_sofar=20<=20cur_off)=0A+=09=20=20=20=20=20=20return=20= true;=0A+=09=20=20=20=20size_sofar=20=3D=20cur_off=0A+=09=09=09=20+=20= tree_to_uhwi=20(TYPE_SIZE_UNIT=20(TREE_TYPE=20(field)));=0A+=20=20=20=20=09= =20=20}=0A+=09if=20(size_sofar=20<=20record_size)=0A+=09=20=20return=20= true;=0A+=09/*=20If=20any=20of=20the=20field=20has=20padding,=20return=20= true.=20=20*/=0A+=09for=20(tree=20field=3D=20TYPE_FIELDS=20(type);=20= field;=20field=20=3D=20DECL_CHAIN=20(field))=0A+=09=20=20{=0A+=09=20=20=20= =20if=20((TREE_CODE=20(field)=20!=3D=20FIELD_DECL))=0A+=09=20=20=20=20=20= =20continue;=0A+=09=20=20=20=20if=20(AGGREGATE_TYPE_P=20(TREE_TYPE=20= (field))=0A+=09=09&&=20type_has_padding=20(TREE_TYPE=20(field)))=0A+=09=20= =20=20=20=20=20return=20true;=0A+=09=20=20}=0A+=20=20=09return=20false;=0A= +=20=20=20=20=20=20}=0A+=20=20=20=20case=20UNION_TYPE:=0A+=20=20=20=20= case=20QUAL_UNION_TYPE:=0A+=20=20=20=20=20=20{=0A+=09tree=20max_field=20= =3D=20NULL;=0A+=09unsigned=20max_size=20=3D=200;=0A+=09for=20(tree=20= field=20=3D=20TYPE_FIELDS=20(type);=20field;=20field=20=3D=20DECL_CHAIN=20= (field))=0A+=09=20=20{=0A+=09=20=20=20=20if=20(TREE_CODE=20(field)=20!=3D=20= FIELD_DECL)=0A+=09=20=20=20=20=20=20continue;=0A+=09=20=20=20=20if=20= (tree_to_uhwi=20(TYPE_SIZE_UNIT=20(TREE_TYPE=20(field)))=20>=3D=20= max_size)=0A+=09=20=20=20=20=20=20{=0A+=09=09max_size=20=3D=20= tree_to_uhwi=20(TYPE_SIZE_UNIT=20(TREE_TYPE=20(field)));=0A+=09=09= max_field=20=3D=20field;=0A+=09=20=20=20=20=20=20}=0A+=09=20=20}=0A+=09= if=20(AGGREGATE_TYPE_P=20(TREE_TYPE=20(max_field)))=0A+=09=20=20return=20= type_has_padding=20(TREE_TYPE=20(max_field));=0A+=09return=20false;=0A+=20= =20=20=20=20=20}=0A+=20=20=20=20case=20ARRAY_TYPE:=0A+=20=20=20=20=20=20= {=0A+=09if=20(AGGREGATE_TYPE_P=20(TREE_TYPE=20(type)))=0A+=09=20=20= return=20type_has_padding=20(TREE_TYPE=20(type));=0A+=20=09return=20= false;=0A+=20=20=20=20=20=20}=0A+=20=20=20=20default:=0A+=20=20=20=20=20=20= return=20false;=0A+=20=20=20=20}=0A+}=0A+=0A=20/*=20Return=20nonzero=20= if=20two=20operands=20that=20are=20suitable=20for=20PHI=20nodes=20are=0A=20= =20=20=20necessarily=20equal.=20=20Specifically,=20both=20ARG0=20and=20= ARG1=20must=20be=20either=0A=20=20=20=20SSA_NAME=20or=20invariant.=20=20= Note=20that=20this=20is=20strictly=20an=20optimization.=0Adiff=20--git=20= a/gcc/tree.h=20b/gcc/tree.h=0Aindex=207faa49d42ba3..7b7d5bf76bd1=20= 100644=0A---=20a/gcc/tree.h=0A+++=20b/gcc/tree.h=0A@@=20-4460,6=20= +4460,7=20@@=20extern=20tree=20build_one_cst=20(tree);=0A=20extern=20= tree=20build_minus_one_cst=20(tree);=0A=20extern=20tree=20= build_all_ones_cst=20(tree);=0A=20extern=20tree=20build_zero_cst=20= (tree);=0A+extern=20tree=20build_pattern_cst_for_auto_init=20(tree);=0A=20= extern=20tree=20build_string=20(unsigned,=20const=20char=20*=20=3D=20= NULL);=0A=20extern=20tree=20build_poly_int_cst=20(tree,=20const=20= poly_wide_int_ref=20&);=0A=20extern=20tree=20build_tree_list=20(tree,=20= tree=20CXX_MEM_STAT_INFO);=0A@@=20-5125,6=20+5126,7=20@@=20extern=20bool=20= operation_can_overflow=20(enum=20tree_code);=0A=20extern=20bool=20= operation_no_trapping_overflow=20(tree,=20enum=20tree_code);=0A=20extern=20= tree=20upper_bound_in_type=20(tree,=20tree);=0A=20extern=20tree=20= lower_bound_in_type=20(tree,=20tree);=0A+extern=20bool=20= type_has_padding=20(tree);=0A=20extern=20int=20= operand_equal_for_phi_arg_p=20(const_tree,=20const_tree);=0A=20extern=20= tree=20create_artificial_label=20(location_t);=0A=20extern=20const=20= char=20*get_name=20(tree);=0A--=20=0A2.27.0=0A=0A= --Apple-Mail=_0F1E6D9F-6531-43BB-845A-DF7B7E824E75 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_0F1E6D9F-6531-43BB-845A-DF7B7E824E75--