1*4c3eb207Smrg#!/usr/bin/env python3 2*4c3eb207Smrg 3*4c3eb207Smrg# Copyright (C) 2020 Free Software Foundation, Inc. 4*4c3eb207Smrg# 5*4c3eb207Smrg# This file is part of GCC. 6*4c3eb207Smrg# 7*4c3eb207Smrg# GCC is free software; you can redistribute it and/or modify 8*4c3eb207Smrg# it under the terms of the GNU General Public License as published by 9*4c3eb207Smrg# the Free Software Foundation; either version 3, or (at your option) 10*4c3eb207Smrg# any later version. 11*4c3eb207Smrg# 12*4c3eb207Smrg# GCC is distributed in the hope that it will be useful, 13*4c3eb207Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 14*4c3eb207Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*4c3eb207Smrg# GNU General Public License for more details. 16*4c3eb207Smrg# 17*4c3eb207Smrg# You should have received a copy of the GNU General Public License 18*4c3eb207Smrg# along with GCC; see the file COPYING. If not, write to 19*4c3eb207Smrg# the Free Software Foundation, 51 Franklin Street, Fifth Floor, 20*4c3eb207Smrg# Boston, MA 02110-1301, USA. 21*4c3eb207Smrg 22*4c3eb207Smrg# This script parses a .diff file generated with 'diff -up' or 'diff -cp' 23*4c3eb207Smrg# and adds a skeleton ChangeLog file to the file. It does not try to be 24*4c3eb207Smrg# too smart when parsing function names, but it produces a reasonable 25*4c3eb207Smrg# approximation. 26*4c3eb207Smrg# 27*4c3eb207Smrg# Author: Martin Liska <mliska@suse.cz> 28*4c3eb207Smrg 29*4c3eb207Smrgimport unittest 30*4c3eb207Smrg 31*4c3eb207Smrgfrom mklog import generate_changelog 32*4c3eb207Smrg 33*4c3eb207Smrgimport unidiff 34*4c3eb207Smrg 35*4c3eb207Smrgunidiff_supports_renaming = hasattr(unidiff.PatchedFile(), 'is_rename') 36*4c3eb207Smrg 37*4c3eb207Smrg 38*4c3eb207SmrgPATCH1 = '''\ 39*4c3eb207Smrgdiff --git a/gcc/config/riscv/riscv.h b/gcc/config/riscv/riscv.h 40*4c3eb207Smrgindex 567c23380fe..e6209ede9d6 100644 41*4c3eb207Smrg--- a/gcc/config/riscv/riscv.h 42*4c3eb207Smrg+++ b/gcc/config/riscv/riscv.h 43*4c3eb207Smrg@@ -920,6 +920,7 @@ extern unsigned riscv_stack_boundary; 44*4c3eb207Smrg #define SHIFT_RS1 15 45*4c3eb207Smrg #define SHIFT_IMM 20 46*4c3eb207Smrg #define IMM_BITS 12 47*4c3eb207Smrg+#define C_S_BITS 5 48*4c3eb207Smrg #define C_SxSP_BITS 6 49*4c3eb207Smrg 50*4c3eb207Smrg #define IMM_REACH (1LL << IMM_BITS) 51*4c3eb207Smrg@@ -929,6 +930,10 @@ extern unsigned riscv_stack_boundary; 52*4c3eb207Smrg #define SWSP_REACH (4LL << C_SxSP_BITS) 53*4c3eb207Smrg #define SDSP_REACH (8LL << C_SxSP_BITS) 54*4c3eb207Smrg 55*4c3eb207Smrg+/* This is the maximum value that can be represented in a compressed load/store 56*4c3eb207Smrg+ offset (an unsigned 5-bit value scaled by 4). */ 57*4c3eb207Smrg+#define CSW_MAX_OFFSET ((4LL << C_S_BITS) - 1) & ~3 58*4c3eb207Smrg+ 59*4c3eb207Smrg /* Called from RISCV_REORG, this is defined in riscv-sr.c. */ 60*4c3eb207Smrg 61*4c3eb207Smrg extern void riscv_remove_unneeded_save_restore_calls (void); 62*4c3eb207Smrg 63*4c3eb207Smrg''' 64*4c3eb207Smrg 65*4c3eb207SmrgEXPECTED1 = '''\ 66*4c3eb207Smrggcc/ChangeLog: 67*4c3eb207Smrg 68*4c3eb207Smrg * config/riscv/riscv.h (C_S_BITS): 69*4c3eb207Smrg (CSW_MAX_OFFSET): 70*4c3eb207Smrg 71*4c3eb207Smrg''' 72*4c3eb207Smrg 73*4c3eb207SmrgPATCH2 = '''\ 74*4c3eb207Smrgdiff --git a/gcc/targhooks.h b/gcc/targhooks.h 75*4c3eb207Smrgindex 9704d23f1db..b572a36e8cf 100644 76*4c3eb207Smrg--- a/gcc/targhooks.h 77*4c3eb207Smrg+++ b/gcc/targhooks.h 78*4c3eb207Smrg@@ -120,7 +120,7 @@ extern bool default_empty_mask_is_expensive (unsigned); 79*4c3eb207Smrg extern void *default_init_cost (class loop *); 80*4c3eb207Smrg extern unsigned default_add_stmt_cost (class vec_info *, void *, int, 81*4c3eb207Smrg enum vect_cost_for_stmt, 82*4c3eb207Smrg- class _stmt_vec_info *, int, 83*4c3eb207Smrg+ class _stmt_vec_info *, tree, int, 84*4c3eb207Smrg enum vect_cost_model_location); 85*4c3eb207Smrg extern void default_finish_cost (void *, unsigned *, unsigned *, unsigned *); 86*4c3eb207Smrg extern void default_destroy_cost_data (void *); 87*4c3eb207Smrg@@ -186,6 +186,7 @@ extern tree default_emutls_var_init (tree, tree, tree); 88*4c3eb207Smrg extern unsigned int default_hard_regno_nregs (unsigned int, machine_mode); 89*4c3eb207Smrg extern bool default_hard_regno_scratch_ok (unsigned int); 90*4c3eb207Smrg extern bool default_mode_dependent_address_p (const_rtx, addr_space_t); 91*4c3eb207Smrg+extern bool default_new_address_profitable_p (rtx, rtx_insn *, rtx); 92*4c3eb207Smrg extern bool default_target_option_valid_attribute_p (tree, tree, tree, int); 93*4c3eb207Smrg extern bool default_target_option_pragma_parse (tree, tree); 94*4c3eb207Smrg extern bool default_target_can_inline_p (tree, tree); 95*4c3eb207Smrg 96*4c3eb207Smrg''' 97*4c3eb207Smrg 98*4c3eb207SmrgEXPECTED2 = '''\ 99*4c3eb207Smrggcc/ChangeLog: 100*4c3eb207Smrg 101*4c3eb207Smrg * targhooks.h (default_add_stmt_cost): 102*4c3eb207Smrg (default_new_address_profitable_p): 103*4c3eb207Smrg 104*4c3eb207Smrg''' 105*4c3eb207Smrg 106*4c3eb207SmrgPATCH3 = '''\ 107*4c3eb207Smrgdiff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h 108*4c3eb207Smrgindex 2b1e33f94ae..7f47402f9b9 100644 109*4c3eb207Smrg--- a/libcpp/include/cpplib.h 110*4c3eb207Smrg+++ b/libcpp/include/cpplib.h 111*4c3eb207Smrg@@ -173,7 +173,7 @@ enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_GNUC11, CLK_GNUC17, CLK_GNUC2X, 112*4c3eb207Smrg CLK_STDC2X, 113*4c3eb207Smrg CLK_GNUCXX, CLK_CXX98, CLK_GNUCXX11, CLK_CXX11, 114*4c3eb207Smrg CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX17, CLK_CXX17, 115*4c3eb207Smrg- CLK_GNUCXX2A, CLK_CXX2A, CLK_ASM}; 116*4c3eb207Smrg+ CLK_GNUCXX20, CLK_CXX20, CLK_ASM}; 117*4c3eb207Smrg 118*4c3eb207Smrg /* Payload of a NUMBER, STRING, CHAR or COMMENT token. */ 119*4c3eb207Smrg struct GTY(()) cpp_string { 120*4c3eb207Smrg@@ -484,7 +484,7 @@ struct cpp_options 121*4c3eb207Smrg /* Nonzero for C2X decimal floating-point constants. */ 122*4c3eb207Smrg unsigned char dfp_constants; 123*4c3eb207Smrg 124*4c3eb207Smrg- /* Nonzero for C++2a __VA_OPT__ feature. */ 125*4c3eb207Smrg+ /* Nonzero for C++20 __VA_OPT__ feature. */ 126*4c3eb207Smrg unsigned char va_opt; 127*4c3eb207Smrg 128*4c3eb207Smrg /* Nonzero for the '::' token. */ 129*4c3eb207Smrg 130*4c3eb207Smrg''' 131*4c3eb207Smrg 132*4c3eb207SmrgEXPECTED3 = '''\ 133*4c3eb207Smrglibcpp/ChangeLog: 134*4c3eb207Smrg 135*4c3eb207Smrg * include/cpplib.h (enum c_lang): 136*4c3eb207Smrg (struct cpp_options): 137*4c3eb207Smrg 138*4c3eb207Smrg''' 139*4c3eb207Smrg 140*4c3eb207SmrgEXPECTED3B = '''\ 141*4c3eb207Smrglibcpp/ChangeLog: 142*4c3eb207Smrg 143*4c3eb207Smrg * include/cpplib.h: 144*4c3eb207Smrg 145*4c3eb207Smrg''' 146*4c3eb207Smrg 147*4c3eb207SmrgPATCH4 = '''\ 148*4c3eb207Smrgdiff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c 149*4c3eb207Smrgindex aab79492357..f0df1002488 100644 150*4c3eb207Smrg--- a/gcc/ipa-icf.c 151*4c3eb207Smrg+++ b/gcc/ipa-icf.c 152*4c3eb207Smrg@@ -1,5 +1,7 @@ 153*4c3eb207Smrg 154*4c3eb207Smrg 155*4c3eb207Smrg+ 156*4c3eb207Smrg+ 157*4c3eb207Smrg /* Interprocedural Identical Code Folding pass 158*4c3eb207Smrg Copyright (C) 2014-2020 Free Software Foundation, Inc. 159*4c3eb207Smrg 160*4c3eb207Smrgdiff --git a/gcc/testsuite/gcc.dg/pr32374.c b/gcc/testsuite/gcc.dg/pr32374.c 161*4c3eb207Smrgdeleted file mode 100644 162*4c3eb207Smrgindex de15d559f5b..00000000000 163*4c3eb207Smrg--- a/gcc/testsuite/gcc.dg/pr32374.c 164*4c3eb207Smrg+++ /dev/null 165*4c3eb207Smrg@@ -1,20 +0,0 @@ 166*4c3eb207Smrg-/* { dg-do compile } */ 167*4c3eb207Smrg-/* { dg-options "-O2" } */ 168*4c3eb207Smrg- 169*4c3eb207Smrg-extern int *stderr; 170*4c3eb207Smrg- 171*4c3eb207Smrg-void f (int *, const char *, ...); 172*4c3eb207Smrg- 173*4c3eb207Smrg-void g (const char *conf_name) 174*4c3eb207Smrg-{ 175*4c3eb207Smrg- typedef struct 176*4c3eb207Smrg- { 177*4c3eb207Smrg- const char *label; 178*4c3eb207Smrg- const int value; 179*4c3eb207Smrg- } Section; 180*4c3eb207Smrg- 181*4c3eb207Smrg- const Section sections[2] = { {"", 0}, {"", 1} }; 182*4c3eb207Smrg- 183*4c3eb207Smrg- f (stderr, "", "", conf_name, 0, sections[0]); 184*4c3eb207Smrg- f (stderr, "", "", conf_name, 0, sections[0]); 185*4c3eb207Smrg-} 186*4c3eb207Smrgdiff --git a/gcc/testsuite/gcc.dg/pr40209.c b/gcc/testsuite/gcc.dg/pr40209.c 187*4c3eb207Smrgindex 4e77df5c2e6..c23d69d1f1b 100644 188*4c3eb207Smrg--- a/gcc/testsuite/gcc.dg/pr40209.c 189*4c3eb207Smrg+++ b/gcc/testsuite/gcc.dg/pr40209.c 190*4c3eb207Smrg@@ -1,6 +1,8 @@ 191*4c3eb207Smrg /* { dg-do compile } */ 192*4c3eb207Smrg /* { dg-options "-O2 -fprofile-use -fopt-info -Wno-missing-profile" } */ 193*4c3eb207Smrg 194*4c3eb207Smrg+ 195*4c3eb207Smrg+ 196*4c3eb207Smrg void process(const char *s); 197*4c3eb207Smrg 198*4c3eb207Smrg struct BaseHolder { 199*4c3eb207Smrgdiff --git a/gcc/testsuite/gcc.dg/pr50209.c b/gcc/testsuite/gcc.dg/pr50209.c 200*4c3eb207Smrgnew file mode 100644 201*4c3eb207Smrgindex 00000000000..b28b04f6431 202*4c3eb207Smrg--- /dev/null 203*4c3eb207Smrg+++ b/gcc/testsuite/gcc.dg/pr50209.c 204*4c3eb207Smrg@@ -0,0 +1,3 @@ 205*4c3eb207Smrg+ 206*4c3eb207Smrg+ 207*4c3eb207Smrg+ 208*4c3eb207Smrgdiff --git a/gcc/testsuite/gcc.dg/pr63567-1.c b/gcc/testsuite/gcc.dg/pr63567-1.c 209*4c3eb207Smrgindex 97da171563e..00c5ecc11fa 100644 210*4c3eb207Smrg--- a/gcc/testsuite/gcc.dg/pr63567-1.c 211*4c3eb207Smrg+++ b/gcc/testsuite/gcc.dg/pr63567-1.c 212*4c3eb207Smrg@@ -1,3 +1,4 @@ 213*4c3eb207Smrg+ 214*4c3eb207Smrg /* PR c/63567 */ 215*4c3eb207Smrg /* { dg-do compile } */ 216*4c3eb207Smrg /* { dg-options "" } */ 217*4c3eb207Smrgdiff --git a/gcc/varasm.c b/gcc/varasm.c 218*4c3eb207Smrgindex f062e48071f..fd3c7ca8cf3 100644 219*4c3eb207Smrg--- a/gcc/varasm.c 220*4c3eb207Smrg+++ b/gcc/varasm.c 221*4c3eb207Smrg@@ -1,3 +1,5 @@ 222*4c3eb207Smrg+ 223*4c3eb207Smrg+ 224*4c3eb207Smrg /* Output variables, constants and external declarations, for GNU compiler. 225*4c3eb207Smrg Copyright (C) 1987-2020 Free Software Foundation, Inc. 226*4c3eb207Smrg 227*4c3eb207Smrgdiff --git a/libssp/gets-chk.c b/libssp/gets-chk.c 228*4c3eb207Smrgindex 4ad78c1f77b..6687b368038 100644 229*4c3eb207Smrg--- a/libssp/gets-chk.c 230*4c3eb207Smrg+++ b/libssp/gets-chk.c 231*4c3eb207Smrg@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 232*4c3eb207Smrg <http://www.gnu.org/licenses/>. */ 233*4c3eb207Smrg 234*4c3eb207Smrg 235*4c3eb207Smrg+ 236*4c3eb207Smrg+ 237*4c3eb207Smrg #include "config.h" 238*4c3eb207Smrg #include <ssp/ssp.h> 239*4c3eb207Smrg #include <stdarg.h> 240*4c3eb207Smrg''' 241*4c3eb207Smrg 242*4c3eb207SmrgEXPECTED4 = '''\ 243*4c3eb207Smrg 244*4c3eb207Smrg PR 50209 245*4c3eb207Smrg 246*4c3eb207Smrggcc/ChangeLog: 247*4c3eb207Smrg 248*4c3eb207Smrg * ipa-icf.c: 249*4c3eb207Smrg * varasm.c: 250*4c3eb207Smrg 251*4c3eb207Smrglibssp/ChangeLog: 252*4c3eb207Smrg 253*4c3eb207Smrg * gets-chk.c: 254*4c3eb207Smrg 255*4c3eb207Smrggcc/testsuite/ChangeLog: 256*4c3eb207Smrg 257*4c3eb207Smrg * gcc.dg/pr40209.c: 258*4c3eb207Smrg * gcc.dg/pr63567-1.c: 259*4c3eb207Smrg * gcc.dg/pr32374.c: Removed. 260*4c3eb207Smrg * gcc.dg/pr50209.c: New test. 261*4c3eb207Smrg 262*4c3eb207Smrg''' 263*4c3eb207Smrg 264*4c3eb207SmrgPATCH5 = '''\ 265*4c3eb207Smrgdiff --git a/gcc/testsuite/gcc.target/i386/pr95046-6.c b/gcc/testsuite/gcc.target/i386/pr95046-6.c 266*4c3eb207Smrgnew file mode 100644 267*4c3eb207Smrgindex 00000000000..dcc8999c446 268*4c3eb207Smrg--- /dev/null 269*4c3eb207Smrg+++ b/gcc/testsuite/gcc.target/i386/pr95046-6.c 270*4c3eb207Smrg@@ -0,0 +1,44 @@ 271*4c3eb207Smrg+/* PR target/95046 */ 272*4c3eb207Smrg+/* { dg-do compile { target { ! ia32 } } } */ 273*4c3eb207Smrg+/* { dg-options "-O3 -mavx512vl" } */ 274*4c3eb207Smrg+ 275*4c3eb207Smrg+ 276*4c3eb207Smrg+double r[2]; 277*4c3eb207Smrg+int s[2]; 278*4c3eb207Smrg+unsigned int u[2]; 279*4c3eb207Smrg+ 280*4c3eb207Smrg+void 281*4c3eb207Smrg+test_float (void) 282*4c3eb207Smrg+{ 283*4c3eb207Smrg+ for (int i = 0; i < 2; i++) 284*4c3eb207Smrg+ r[i] = s[i]; 285*4c3eb207Smrg+} 286*4c3eb207Smrg+ 287*4c3eb207Smrg+/* { dg-final { scan-assembler "\tvcvtdq2pd" } } */ 288*4c3eb207Smrg+ 289*4c3eb207Smrg+void 290*4c3eb207Smrg+test_ufloat (void) 291*4c3eb207Smrg+{ 292*4c3eb207Smrg+ for (int i = 0; i < 2; i++) 293*4c3eb207Smrg+ r[i] = u[i]; 294*4c3eb207Smrg+} 295*4c3eb207Smrg+ 296*4c3eb207Smrg+/* { dg-final { scan-assembler "\tvcvtudq2pd" } } */ 297*4c3eb207Smrg+ 298*4c3eb207Smrg+void 299*4c3eb207Smrg+test_fix (void) 300*4c3eb207Smrg+{ 301*4c3eb207Smrg+ for (int i = 0; i < 2; i++) 302*4c3eb207Smrg+ s[i] = r[i]; 303*4c3eb207Smrg+} 304*4c3eb207Smrg+ 305*4c3eb207Smrg+/* { dg-final { scan-assembler "\tvcvttpd2dqx" } } */ 306*4c3eb207Smrg+ 307*4c3eb207Smrg+void 308*4c3eb207Smrg+test_ufix (void) 309*4c3eb207Smrg+{ 310*4c3eb207Smrg+ for (int i = 0; i < 2; i++) 311*4c3eb207Smrg+ u[i] = r[i]; 312*4c3eb207Smrg+} 313*4c3eb207Smrg+ 314*4c3eb207Smrg+/* { dg-final { scan-assembler "\tvcvttpd2udqx" } } */ 315*4c3eb207Smrg-- 316*4c3eb207Smrg2.26.2 317*4c3eb207Smrg 318*4c3eb207Smrg''' 319*4c3eb207Smrg 320*4c3eb207SmrgEXPECTED5 = '''\ 321*4c3eb207SmrgPR target/95046 - Vectorize V2SFmode operations 322*4c3eb207Smrg 323*4c3eb207Smrg PR target/95046 324*4c3eb207Smrg 325*4c3eb207Smrggcc/testsuite/ChangeLog: 326*4c3eb207Smrg 327*4c3eb207Smrg * gcc.target/i386/pr95046-6.c: New test. 328*4c3eb207Smrg 329*4c3eb207Smrg''' 330*4c3eb207Smrg 331*4c3eb207SmrgPATCH6 = '''\ 332*4c3eb207Smrgdiff --git a/gcc/cgraph.h b/gcc/cgraph.h 333*4c3eb207Smrgindex 5ddeb65269b..cfae6e91da9 100644 334*4c3eb207Smrg--- a/gcc/cgraph.h 335*4c3eb207Smrg+++ b/gcc/cgraph.h 336*4c3eb207Smrg@@ -937,7 +937,8 @@ struct GTY((tag ("SYMTAB_FUNCTION"))) cgraph_node : public symtab_node 337*4c3eb207Smrg split_part (false), indirect_call_target (false), local (false), 338*4c3eb207Smrg versionable (false), can_change_signature (false), 339*4c3eb207Smrg redefined_extern_inline (false), tm_may_enter_irr (false), 340*4c3eb207Smrg- ipcp_clone (false), m_uid (uid), m_summary_id (-1) 341*4c3eb207Smrg+ ipcp_clone (false), declare_variant_alt (false), 342*4c3eb207Smrg+ calls_declare_variant_alt (false), m_uid (uid), m_summary_id (-1) 343*4c3eb207Smrg {} 344*4c3eb207Smrg 345*4c3eb207Smrg /* Remove the node from cgraph and all inline clones inlined into it. 346*4c3eb207Smrg 347*4c3eb207Smrg''' 348*4c3eb207Smrg 349*4c3eb207SmrgEXPECTED6 = '''\ 350*4c3eb207Smrggcc/ChangeLog: 351*4c3eb207Smrg 352*4c3eb207Smrg * cgraph.h (struct cgraph_node): 353*4c3eb207Smrg 354*4c3eb207Smrg''' 355*4c3eb207Smrg 356*4c3eb207SmrgPATCH7 = '''\ 357*4c3eb207Smrgdiff --git a/gcc/testsuite/g++.dg/DRs/dr2237.C b/gcc/testsuite/g++.dg/DRs/dr2237.C 358*4c3eb207Smrgnew file mode 100644 359*4c3eb207Smrgindex 00000000000..f3d6d11e61e 360*4c3eb207Smrg--- /dev/null 361*4c3eb207Smrg+++ b/gcc/testsuite/g++.dg/DRs/dr2237.C 362*4c3eb207Smrg@@ -0,0 +1,18 @@ 363*4c3eb207Smrg+// DR 2237 - Can a template-id name a constructor? 364*4c3eb207Smrg+ 365*4c3eb207Smrg+template<class T> 366*4c3eb207Smrg+struct X { 367*4c3eb207Smrg+ X<T>(); // { dg-error "expected" "" { target c++20 } } 368*4c3eb207Smrg+ X(int); // OK, injected-class-name used 369*4c3eb207Smrg+ ~X<T>(); // { dg-error "template-id not allowed for destructor" "" { target c++20 } } 370*4c3eb207Smrg+}; 371*4c3eb207Smrg+ 372*4c3eb207Smrg+// ill-formed since DR1435 373*4c3eb207Smrg+template<typename T> X<T>::X<T>() {} // { dg-error "names the constructor|as no template constructors" } 374*4c3eb207Smrg+template<typename T> X<T>::~X<T>() {} // { dg-error "template-id not allowed for destructor" "" { target c++20 } } 375*4c3eb207Smrg+ 376*4c3eb207Smrg+struct Q { 377*4c3eb207Smrg+ // ill-formed since DR1435 378*4c3eb207Smrg+ template<typename T> friend X<T>::X<T>(); // { dg-error "names the constructor|as no template constructors" } 379*4c3eb207Smrg+ template<typename T> friend X<T>::~X<T>(); // { dg-error "template-id not allowed for destructor" "" { target c++20 } } 380*4c3eb207Smrg+}; 381*4c3eb207Smrg''' 382*4c3eb207Smrg 383*4c3eb207SmrgEXPECTED7 = '''\ 384*4c3eb207Smrg 385*4c3eb207Smrg DR 2237 386*4c3eb207Smrg 387*4c3eb207Smrggcc/testsuite/ChangeLog: 388*4c3eb207Smrg 389*4c3eb207Smrg * g++.dg/DRs/dr2237.C: New test. 390*4c3eb207Smrg 391*4c3eb207Smrg''' 392*4c3eb207Smrg 393*4c3eb207SmrgPATCH8 = '''\ 394*4c3eb207Smrgdiff --git a/gcc/ipa-icf.c b/gcc/ipa-icf2.c 395*4c3eb207Smrgsimilarity index 100% 396*4c3eb207Smrgrename from gcc/ipa-icf.c 397*4c3eb207Smrgrename to gcc/ipa-icf2.c 398*4c3eb207Smrg''' 399*4c3eb207Smrg 400*4c3eb207SmrgEXPECTED8 = '''\ 401*4c3eb207Smrggcc/ChangeLog: 402*4c3eb207Smrg 403*4c3eb207Smrg * ipa-icf.c: Moved to... 404*4c3eb207Smrg * ipa-icf2.c: ...here. 405*4c3eb207Smrg 406*4c3eb207Smrg''' 407*4c3eb207Smrg 408*4c3eb207SmrgPATCH9 = '''\ 409*4c3eb207Smrgdiff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md 410*4c3eb207Smrgindex 2a260c1cfbd..7f03fc491c3 100644 411*4c3eb207Smrg--- a/gcc/config/i386/sse.md 412*4c3eb207Smrg+++ b/gcc/config/i386/sse.md 413*4c3eb207Smrg@@ -17611,6 +17611,23 @@ (define_insn "avx2_<code>v16qiv16hi2<mask_name>" 414*4c3eb207Smrg (set_attr "prefix" "maybe_evex") 415*4c3eb207Smrg (set_attr "mode" "OI")]) 416*4c3eb207Smrg 417*4c3eb207Smrg+(define_insn_and_split "*avx2_zero_extendv16qiv16hi2_1" 418*4c3eb207Smrg+ [(set (match_operand:V32QI 0 "register_operand" "=v") 419*4c3eb207Smrg+ (vec_select:V32QI 420*4c3eb207Smrg+ (vec_concat:V64QI 421*4c3eb207Smrg+ (match_operand:V32QI 1 "nonimmediate_operand" "vm") 422*4c3eb207Smrg+ (match_operand:V32QI 2 "const0_operand" "C")) 423*4c3eb207Smrg+ (match_parallel 3 "pmovzx_parallel" 424*4c3eb207Smrg+ [(match_operand 4 "const_int_operand" "n")])))] 425*4c3eb207Smrg+ "TARGET_AVX2" 426*4c3eb207Smrg+ "#" 427*4c3eb207Smrg+ "&& reload_completed" 428*4c3eb207Smrg+ [(set (match_dup 0) (zero_extend:V16HI (match_dup 1)))] 429*4c3eb207Smrg+{ 430*4c3eb207Smrg+ operands[0] = lowpart_subreg (V16HImode, operands[0], V32QImode); 431*4c3eb207Smrg+ operands[1] = lowpart_subreg (V16QImode, operands[1], V32QImode); 432*4c3eb207Smrg+}) 433*4c3eb207Smrg+ 434*4c3eb207Smrg (define_expand "<insn>v16qiv16hi2" 435*4c3eb207Smrg [(set (match_operand:V16HI 0 "register_operand") 436*4c3eb207Smrg (any_extend:V16HI 437*4c3eb207Smrg''' 438*4c3eb207Smrg 439*4c3eb207SmrgEXPECTED9 = '''\ 440*4c3eb207Smrggcc/ChangeLog: 441*4c3eb207Smrg 442*4c3eb207Smrg * config/i386/sse.md (*avx2_zero_extendv16qiv16hi2_1): 443*4c3eb207Smrg 444*4c3eb207Smrg''' 445*4c3eb207Smrg 446*4c3eb207Smrgclass TestMklog(unittest.TestCase): 447*4c3eb207Smrg def test_macro_definition(self): 448*4c3eb207Smrg changelog = generate_changelog(PATCH1) 449*4c3eb207Smrg assert changelog == EXPECTED1 450*4c3eb207Smrg 451*4c3eb207Smrg def test_changed_argument(self): 452*4c3eb207Smrg changelog = generate_changelog(PATCH2) 453*4c3eb207Smrg assert changelog == EXPECTED2 454*4c3eb207Smrg 455*4c3eb207Smrg def test_enum_and_struct(self): 456*4c3eb207Smrg changelog = generate_changelog(PATCH3) 457*4c3eb207Smrg assert changelog == EXPECTED3 458*4c3eb207Smrg 459*4c3eb207Smrg def test_no_function(self): 460*4c3eb207Smrg changelog = generate_changelog(PATCH3, True) 461*4c3eb207Smrg assert changelog == EXPECTED3B 462*4c3eb207Smrg 463*4c3eb207Smrg def test_sorting(self): 464*4c3eb207Smrg changelog = generate_changelog(PATCH4) 465*4c3eb207Smrg assert changelog == EXPECTED4 466*4c3eb207Smrg 467*4c3eb207Smrg def test_pr_bugzilla_download(self): 468*4c3eb207Smrg changelog = generate_changelog(PATCH5, fill_pr_titles=True) 469*4c3eb207Smrg assert changelog == EXPECTED5 470*4c3eb207Smrg 471*4c3eb207Smrg def test_gty_in_struct(self): 472*4c3eb207Smrg changelog = generate_changelog(PATCH6, fill_pr_titles=True) 473*4c3eb207Smrg assert changelog == EXPECTED6 474*4c3eb207Smrg 475*4c3eb207Smrg def test_dr_detection_in_test_case(self): 476*4c3eb207Smrg changelog = generate_changelog(PATCH7) 477*4c3eb207Smrg assert changelog == EXPECTED7 478*4c3eb207Smrg 479*4c3eb207Smrg @unittest.skipIf(not unidiff_supports_renaming, 480*4c3eb207Smrg 'Newer version of unidiff is needed (0.6.0+)') 481*4c3eb207Smrg def test_renaming(self): 482*4c3eb207Smrg changelog = generate_changelog(PATCH8) 483*4c3eb207Smrg assert changelog == EXPECTED8 484*4c3eb207Smrg 485*4c3eb207Smrg def test_define_macro_parsing(self): 486*4c3eb207Smrg changelog = generate_changelog(PATCH9) 487*4c3eb207Smrg assert changelog == EXPECTED9 488