Magellan Linux

Annotation of /trunk/gcc/patches/gcc-9.1.0-bz90949.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3371 - (hide annotations) (download)
Tue Jul 16 21:41:02 2019 UTC (4 years, 10 months ago) by niro
File size: 2599 byte(s)
-gcc-9.1.0 fixes
1 niro 3371 Index: gcc/testsuite/gcc.c-torture/execute/pr90949.c
2     ===================================================================
3     --- gcc/testsuite/gcc.c-torture/execute/pr90949.c (nonexistent)
4     +++ gcc/testsuite/gcc.c-torture/execute/pr90949.c (revision 272555)
5     @@ -0,0 +1,42 @@
6     +void __attribute__ ((noipa, noinline)) my_puts (const char *str) { }
7     +
8     +void __attribute__ ((noipa, noinline)) my_free (void *p) { }
9     +
10     +
11     +struct Node
12     +{
13     + struct Node *child;
14     +};
15     +
16     +struct Node space[2] = { };
17     +
18     +struct Node * __attribute__ ((noipa, noinline)) my_malloc (int bytes)
19     +{
20     + return &space[0];
21     +}
22     +
23     +void
24     +walk (struct Node *module, int cleanup)
25     +{
26     + if (module == 0)
27     + {
28     + return;
29     + }
30     + if (!cleanup)
31     + {
32     + my_puts ("No cleanup");
33     + }
34     + walk (module->child, cleanup);
35     + if (cleanup)
36     + {
37     + my_free (module);
38     + }
39     +}
40     +
41     +int
42     +main ()
43     +{
44     + struct Node *node = my_malloc (sizeof (struct Node));
45     + node->child = 0;
46     + walk (node, 1);
47     +}
48     Index: gcc/tree-ssa-copy.c
49     ===================================================================
50     --- gcc/tree-ssa-copy.c (revision 272554)
51     +++ gcc/tree-ssa-copy.c (revision 272555)
52     @@ -545,13 +545,12 @@
53     duplicate_ssa_name_ptr_info (copy_of[i].value,
54     SSA_NAME_PTR_INFO (var));
55     /* Points-to information is cfg insensitive,
56     - but alignment info might be cfg sensitive, if it
57     - e.g. is derived from VRP derived non-zero bits.
58     - So, do not copy alignment info if the two SSA_NAMEs
59     - aren't defined in the same basic block. */
60     + but [E]VRP might record context sensitive alignment
61     + info, non-nullness, etc. So reset context sensitive
62     + info if the two SSA_NAMEs aren't defined in the same
63     + basic block. */
64     if (var_bb != copy_of_bb)
65     - mark_ptr_info_alignment_unknown
66     - (SSA_NAME_PTR_INFO (copy_of[i].value));
67     + reset_flow_sensitive_info (copy_of[i].value);
68     }
69     else if (!POINTER_TYPE_P (TREE_TYPE (var))
70     && SSA_NAME_RANGE_INFO (var)
71     Index: gcc/tree-ssanames.c
72     ===================================================================
73     --- gcc/tree-ssanames.c (revision 272554)
74     +++ gcc/tree-ssanames.c (revision 272555)
75     @@ -820,7 +820,12 @@
76     {
77     /* points-to info is not flow-sensitive. */
78     if (SSA_NAME_PTR_INFO (name))
79     - mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (name));
80     + {
81     + /* [E]VRP can derive context sensitive alignment info and
82     + non-nullness properties. We must reset both. */
83     + mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (name));
84     + SSA_NAME_PTR_INFO (name)->pt.null = 1;
85     + }
86     }
87     else
88     SSA_NAME_RANGE_INFO (name) = NULL;