1
# DP: Fix PR target/59588 (AArch64), backport proposed patch.
4
2014-01-11 Matthew Gretton-Dann <matthew.gretton-dann@linaro.org>
5
Kugan Vivekanandarajah <kuganv@linaro.org>
8
* config/aarch64/aarch64.c (aarch64_build_constant): Fix incorrect
12
2014-01-11 Matthew Gretton-Dann <matthew.gretton-dann@linaro.org>
13
Kugan Vivekanandarajah <kuganv@linaro.org>
16
* g++.dg/pr59695.C: New file.
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)
23
emit_move_insn (gen_rtx_REG (Pmode, regnum),
24
- GEN_INT ((~val) & 0xffff));
25
+ GEN_INT (~((~val) & 0xffff)));
29
--- a/src/gcc/testsuite/g++.dg/pr59695.C
30
+++ b/src/gcc/testsuite/g++.dg/pr59695.C
33
+/* PR target/53055 */
34
+/* { dg-do run { target aarch64*-*-* } } */
35
+/* { dg-options "-O0" } */
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 () {}\
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)
88
+ virtual ~base_class_2 ();
91
+base_class_2::base_class_2()
95
+base_class_2::~base_class_2 ()
102
+ virtual ~base_class_1();
106
+base_class_1::base_class_1()
110
+base_class_1::~base_class_1()
114
+class base_Impl_class :
115
+ virtual public base_class_2, public base_class_1
118
+ base_Impl_class ();
119
+ virtual ~base_Impl_class ();
122
+base_Impl_class::base_Impl_class ()
126
+base_Impl_class::~base_Impl_class ()
131
+class test_cls : public base_Impl_class
135
+ virtual ~test_cls();
138
+test_cls::test_cls()
142
+test_cls::~test_cls()
148
+ test_cls *test = new test_cls;
149
+ base_class_2 *p1 = test;
151
+ /* PR 53055 destructor thunk offsets are not setup
152
+ correctly resulting in crash. */