~ubuntu-branches/debian/sid/gcc-4.8/sid

« back to all changes in this revision

Viewing changes to .svn/pristine/f1/f13dc28b94a4b6b85bd9382c6079717cda337b34.svn-base

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2014-12-19 19:48:34 UTC
  • Revision ID: package-import@ubuntu.com-20141219194834-4dz1q7rrn5pad823
Tags: 4.8.4-1
* GCC 4.8.4 release.
  - Fix PR target/61407 (darwin), PR middle-end/58624 (ice),
    PR sanitizer/64265 (wrong code).
* Require recent binutils to pass go test failures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# DP: Fix PR target/59588 (AArch64), backport proposed patch.
 
2
 
 
3
gcc/
 
4
2014-01-11  Matthew Gretton-Dann  <matthew.gretton-dann@linaro.org>
 
5
            Kugan Vivekanandarajah  <kuganv@linaro.org>
 
6
 
 
7
        PR target/59588
 
8
        * config/aarch64/aarch64.c (aarch64_build_constant): Fix incorrect
 
9
        truncation.
 
10
 
 
11
gcc/testsuite/
 
12
2014-01-11  Matthew Gretton-Dann  <matthew.gretton-dann@linaro.org>
 
13
            Kugan Vivekanandarajah  <kuganv@linaro.org>
 
14
 
 
15
        PR target/59695
 
16
        * g++.dg/pr59695.C: New file.
 
17
 
 
18
--- a/src/gcc/config/aarch64/aarch64.c
 
19
+++ b/src/gcc/config/aarch64/aarch64.c
 
20
@@ -2486,7 +2486,7 @@ aarch64_build_constant (int regnum, HOST_WIDE_INT val)
 
21
       if (ncount < zcount)
 
22
        {
 
23
          emit_move_insn (gen_rtx_REG (Pmode, regnum),
 
24
-                         GEN_INT ((~val) & 0xffff));
 
25
+                         GEN_INT (~((~val) & 0xffff)));
 
26
          tval = 0xffff;
 
27
        }
 
28
       else
 
29
--- a/src/gcc/testsuite/g++.dg/pr59695.C
 
30
+++ b/src/gcc/testsuite/g++.dg/pr59695.C
 
31
@@ -0,0 +1,125 @@
 
32
+
 
33
+/* PR target/53055 */
 
34
+/* { dg-do run { target aarch64*-*-* } } */
 
35
+/* { dg-options "-O0" } */
 
36
+
 
37
+#define  DEFINE_VIRTUALS_FNS(i)        virtual void  xxx##i () {} \
 
38
+  virtual void  foo1_##i ()    {}\
 
39
+  virtual void  foo2_##i ()    {}\
 
40
+  virtual void  foo3_##i ()    {}\
 
41
+  virtual void  foo4_##i ()    {}\
 
42
+  virtual void  foo5_##i ()    {}\
 
43
+  virtual void  foo6_##i ()    {}\
 
44
+  virtual void  foo7_##i ()    {}\
 
45
+  virtual void  foo8_##i ()    {}\
 
46
+  virtual void  foo9_##i ()    {}\
 
47
+  virtual void  foo10_##i ()   {}\
 
48
+  virtual void  foo11_##i ()   {}\
 
49
+  virtual void  foo12_##i ()   {}\
 
50
+  virtual void  foo13_##i ()   {}\
 
51
+  virtual void  foo14_##i ()   {}\
 
52
+  virtual void  foo15_##i ()   {}\
 
53
+  virtual void  foo16_##i ()   {}\
 
54
+  virtual void  foo17_##i ()   {}\
 
55
+  virtual void  foo18_##i ()   {}\
 
56
+  virtual void  foo19_##i ()   {}\
 
57
+  virtual void  foo20_##i ()   {}\
 
58
+  virtual void  foo21_##i ()   {}\
 
59
+  virtual void  foo22_##i ()   {}\
 
60
+
 
61
+class base_class_2
 
62
+{
 
63
+
 
64
+public:
 
65
+  /* Define lots of virtual functions */
 
66
+  DEFINE_VIRTUALS_FNS (1)
 
67
+  DEFINE_VIRTUALS_FNS (2)
 
68
+  DEFINE_VIRTUALS_FNS (3)
 
69
+  DEFINE_VIRTUALS_FNS (4)
 
70
+  DEFINE_VIRTUALS_FNS (5)
 
71
+  DEFINE_VIRTUALS_FNS (6)
 
72
+  DEFINE_VIRTUALS_FNS (7)
 
73
+  DEFINE_VIRTUALS_FNS (8)
 
74
+  DEFINE_VIRTUALS_FNS (9)
 
75
+  DEFINE_VIRTUALS_FNS (10)
 
76
+  DEFINE_VIRTUALS_FNS (11)
 
77
+  DEFINE_VIRTUALS_FNS (12)
 
78
+  DEFINE_VIRTUALS_FNS (13)
 
79
+  DEFINE_VIRTUALS_FNS (14)
 
80
+  DEFINE_VIRTUALS_FNS (15)
 
81
+  DEFINE_VIRTUALS_FNS (16)
 
82
+  DEFINE_VIRTUALS_FNS (17)
 
83
+  DEFINE_VIRTUALS_FNS (18)
 
84
+  DEFINE_VIRTUALS_FNS (19)
 
85
+  DEFINE_VIRTUALS_FNS (20)
 
86
+
 
87
+  base_class_2();
 
88
+  virtual ~base_class_2 ();
 
89
+};
 
90
+
 
91
+base_class_2::base_class_2()
 
92
+{
 
93
+}
 
94
+
 
95
+base_class_2::~base_class_2 ()
 
96
+{
 
97
+}
 
98
+
 
99
+class base_class_1
 
100
+{
 
101
+public:
 
102
+  virtual ~base_class_1();
 
103
+  base_class_1();
 
104
+};
 
105
+
 
106
+base_class_1::base_class_1()
 
107
+{
 
108
+}
 
109
+
 
110
+base_class_1::~base_class_1()
 
111
+{
 
112
+}
 
113
+
 
114
+class base_Impl_class :
 
115
+  virtual public base_class_2, public base_class_1
 
116
+{
 
117
+public:
 
118
+  base_Impl_class ();
 
119
+  virtual ~base_Impl_class ();
 
120
+};
 
121
+
 
122
+base_Impl_class::base_Impl_class ()
 
123
+{
 
124
+}
 
125
+
 
126
+base_Impl_class::~base_Impl_class ()
 
127
+{
 
128
+}
 
129
+
 
130
+
 
131
+class test_cls : public base_Impl_class
 
132
+{
 
133
+public:
 
134
+  test_cls();
 
135
+  virtual ~test_cls();
 
136
+};
 
137
+
 
138
+test_cls::test_cls()
 
139
+{
 
140
+}
 
141
+
 
142
+test_cls::~test_cls()
 
143
+{
 
144
+}
 
145
+
 
146
+int main()
 
147
+{
 
148
+  test_cls *test = new test_cls;
 
149
+  base_class_2 *p1 = test;
 
150
+
 
151
+  /* PR 53055  destructor thunk offsets are not setup
 
152
+   correctly resulting in crash.  */
 
153
+  delete p1;
 
154
+  return 0;
 
155
+}
 
156
+