xref: /netbsd-src/external/gpl3/gcc.old/dist/contrib/test_mklog.py (revision 4c3eb207d36f67d31994830c0a694161fc1ca39b)
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