1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
From 5437c7ffa48f974c6960a1e308c4cdf0ea0a2648 Mon Sep 17 00:00:00 2001
From: Jozef Lawrynowicz <jozef.l@somniumtech.com>
Date: Thu, 24 Aug 2017 11:40:04 +0000
Subject: [PATCH] MSP430: Dont specifically set TYPE_SIZE for __intN types
2017-08-XX Jozef Lawrynowicz <jozef.l@somniumtech.com>
PR target/78849
* gcc/tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
types.
gcc/testsuite
2017-08-XX Jozef Lawrynowicz <jozef.l@somniumtech.com>
PR target/78849
* gcc.target/msp430/msp430.exp: Remove -pedantic-errors from
DEFAULT_CFLAGS.
* gcc.target/msp430/pr78849.c: New test.
---
gcc/testsuite/gcc.target/msp430/msp430.exp | 13 +++++---
gcc/testsuite/gcc.target/msp430/pr78849.c | 50 ++++++++++++++++++++++++++++++
gcc/tree.c | 2 --
3 files changed, 59 insertions(+), 6 deletions(-)
create mode 100644 gcc/testsuite/gcc.target/msp430/pr78849.c
diff --git a/gcc/testsuite/gcc.target/msp430/msp430.exp b/gcc/testsuite/gcc.target/msp430/msp430.exp
index e54d531..3be8711 100644
--- a/gcc/testsuite/gcc.target/msp430/msp430.exp
+++ b/gcc/testsuite/gcc.target/msp430/msp430.exp
@@ -24,10 +24,15 @@ if { ![istarget msp430-*-*] } then {
# Load support procs.
load_lib gcc-dg.exp
-# If a testcase doesn't have special options, use these.
+# The '-pedantic-errors' option in the global variable DEFAULT_CFLAGS that is
+# set by other drivers causes an error when the __int20 type is used, so remove
+# this option from DEFAULT_CFLAGS for the msp430 tests.
global DEFAULT_CFLAGS
-if ![info exists DEFAULT_CFLAGS] then {
- set DEFAULT_CFLAGS ""
+if [info exists DEFAULT_CFLAGS] then {
+ set MSP430_DEFAULT_CFLAGS \
+ [ string map { "-pedantic-errors" "" } $DEFAULT_CFLAGS ]
+} else {
+ set MSP430_DEFAULT_CFLAGS ""
}
# Initialize `dg'.
@@ -35,7 +40,7 @@ dg-init
# Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \
- "" $DEFAULT_CFLAGS
+ "" $MSP430_DEFAULT_CFLAGS
# All done.
dg-finish
diff --git a/gcc/testsuite/gcc.target/msp430/pr78849.c b/gcc/testsuite/gcc.target/msp430/pr78849.c
new file mode 100644
index 0000000..f70f0bb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/msp430/pr78849.c
@@ -0,0 +1,50 @@
+/* { dg-do compile } */
+/* { dg-final { scan-assembler ".size.*instance.*52" } } */
+
+struct t_inner
+{
+ __int20 a;
+ char val1;
+ __int20 b[3];
+ char val2;
+};
+
+struct t_full
+{
+ __int20 array[2];
+ char val1;
+ struct t_inner bb[2];
+ char val2;
+};
+
+struct t_full instance =
+{
+ {
+ 4231,
+ 3212,
+ },
+ 5,
+ {
+ {
+ 87680,
+ 20,
+ {
+ 2534,
+ 3,
+ 41,
+ },
+ 55,
+ },
+ {
+ 567,
+ 4,
+ {
+ 43522,
+ 5433,
+ 454,
+ },
+ 88,
+ },
+ },
+ 8,
+};
diff --git a/gcc/tree.c b/gcc/tree.c
index 4f56892..1c085ba 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -9526,8 +9526,6 @@ build_common_tree_nodes (bool signed_char)
{
int_n_trees[i].signed_type = make_signed_type (int_n_data[i].bitsize);
int_n_trees[i].unsigned_type = make_unsigned_type (int_n_data[i].bitsize);
- TYPE_SIZE (int_n_trees[i].signed_type) = bitsize_int (int_n_data[i].bitsize);
- TYPE_SIZE (int_n_trees[i].unsigned_type) = bitsize_int (int_n_data[i].bitsize);
if (int_n_data[i].bitsize > LONG_LONG_TYPE_SIZE
&& int_n_enabled_p[i])
--
1.8.3.1
|