* [PATCH, AArch64] [4.8] [4.9] Backport PR64304 fix (miscompilation with -mgeneral-regs-only )
@ 2015-03-05 6:36 Chen Shanyao
2015-03-12 11:59 ` [PING] " Chen Shanyao
2015-04-29 15:24 ` Marcus Shawcroft
0 siblings, 2 replies; 3+ messages in thread
From: Chen Shanyao @ 2015-03-05 6:36 UTC (permalink / raw)
To: gcc-patches, ramana Radhakrishnan, Yangfei (Felix)
[-- Attachment #1: Type: text/plain, Size: 6374 bytes --]
This backports the fixes for PR target/64304 , miscompilation with -mgeneral-regs-only, to the 4.8 & 4.9 branch from trunk** </viewcvs/gcc?view=revision&revision=219844> r219844.
Tested on x86_64 by using qemu of aarch64.
OK for 4.8 & 4.9 ?
-------------------------------gcc-4.8---------------------------
diff -rupN gcc-4.8-20150226/gcc/ChangeLog
gcc-4.8-20150226.pr64304//gcc/ChangeLog
--- gcc-4.8-20150226/gcc/ChangeLog 2015-03-04 21:13:46.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/ChangeLog 2015-03-04
21:19:49.000000000 -0500
@@ -1,3 +1,13 @@
+2015-03-05 Shanyao Chen<chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang<jiong.wang@arm.com>
+ Andrew Pinski<apinski@cavium.com>
+
+ PR target/64304
+ * config/aarch64/aarch64.md (define_insn "*ashl<mode>3_insn"):
Deleted.
+ (ashl<mode>3): Don't expand if operands[2] is not constant.
+
2015-02-26 Peter Bergner<bergner@vnet.ibm.com>
Backport from mainline
diff -rupN gcc-4.8-20150226/gcc/config/aarch64/aarch64.md
gcc-4.8-20150226.pr64304//gcc/config/aarch64/aarch64.md
--- gcc-4.8-20150226/gcc/config/aarch64/aarch64.md 2015-03-04
21:14:29.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/config/aarch64/aarch64.md 2015-03-04
21:21:54.000000000 -0500
@@ -2612,6 +2612,8 @@
DONE;
}
}
+ else
+ FAIL;
}
)
@@ -2681,16 +2683,6 @@
(set_attr "mode" "SI")]
)
-(define_insn "*ashl<mode>3_insn"
- [(set (match_operand:SHORT 0 "register_operand" "=r")
- (ashift:SHORT (match_operand:SHORT 1 "register_operand" "r")
- (match_operand:QI 2 "aarch64_reg_or_shift_imm_si" "rUss")))]
- ""
- "lsl\\t%<w>0, %<w>1, %<w>2"
- [(set_attr "v8type" "shift")
- (set_attr "mode" "<MODE>")]
-)
-
(define_insn "*<optab><mode>3_insn"
[(set (match_operand:SHORT 0 "register_operand" "=r")
(ASHIFT:SHORT (match_operand:SHORT 1 "register_operand" "r")
diff -rupN gcc-4.8-20150226/gcc/testsuite/ChangeLog
gcc-4.8-20150226.pr64304//gcc/testsuite/ChangeLog
--- gcc-4.8-20150226/gcc/testsuite/ChangeLog 2015-03-04
21:16:54.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/testsuite/ChangeLog 2015-03-04
21:22:58.000000000 -0500
@@ -1,3 +1,10 @@
+2015-03-05 Shanyao chen<chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang<jiong.wang@arm.com>
+
+ * gcc.target/aarch64/pr64304.c: New testcase.
+
2015-02-26 Peter Bergner<bergner@vnet.ibm.com>
Backport from mainline
diff -rupN gcc-4.8-20150226/gcc/testsuite/gcc.target/aarch64/pr64304.c
gcc-4.8-20150226.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c
--- gcc-4.8-20150226/gcc/testsuite/gcc.target/aarch64/pr64304.c
1969-12-31 19:00:00.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c
2015-03-04 21:12:15.000000000 -0500
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 --save-temps" } */
+
+unsigned char byte = 0;
+
+void
+set_bit (unsigned int bit, unsigned char value)
+{
+ unsigned char mask = (unsigned char) (1 << (bit & 7));
+
+ if (! value)
+ byte &= (unsigned char)~mask;
+ else
+ byte |= mask;
+ /* { dg-final { scan-assembler "and\tw\[0-9\]+, w\[0-9\]+, 7" } } */
+}
+
+/* { dg-final { cleanup-saved-temps } } */
+
-------------------------------gcc-4.9---------------------------
diff -rupN gcc-4.9-20150225/gcc/ChangeLog
gcc-4.9-20150225.pr64304//gcc/ChangeLog
--- gcc-4.9-20150225/gcc/ChangeLog 2015-03-04 20:48:30.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/ChangeLog 2015-03-04
20:55:59.000000000 -0500
@@ -1,3 +1,13 @@
+2015-03-05 Shanyao Chen<chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang<jiong.wang@arm.com>
+ Andrew Pinski<apinski@cavium.com>
+
+ PR target/64304
+ * config/aarch64/aarch64.md (define_insn "*ashl<mode>3_insn"): Deleted.
+ (ashl<mode>3): Don't expand if operands[2] is not constant.
+
2015-02-25 Kai Tietz<ktietz@redhat.com>
PR tree-optimization/61917
diff -rupN gcc-4.9-20150225/gcc/config/aarch64/aarch64.md
gcc-4.9-20150225.pr64304//gcc/config/aarch64/aarch64.md
--- gcc-4.9-20150225/gcc/config/aarch64/aarch64.md 2015-03-04
20:41:03.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/config/aarch64/aarch64.md 2015-03-04
20:46:44.000000000 -0500
@@ -2719,6 +2719,8 @@
DONE;
}
}
+ else
+ FAIL;
}
)
@@ -2947,15 +2949,6 @@
[(set_attr "type" "shift_reg")]
)
-(define_insn "*ashl<mode>3_insn"
- [(set (match_operand:SHORT 0 "register_operand" "=r")
- (ashift:SHORT (match_operand:SHORT 1 "register_operand" "r")
- (match_operand:QI 2 "aarch64_reg_or_shift_imm_si" "rUss")))]
- ""
- "lsl\\t%<w>0, %<w>1, %<w>2"
- [(set_attr "type" "shift_reg")]
-)
-
(define_insn "*<optab><mode>3_insn"
[(set (match_operand:SHORT 0 "register_operand" "=r")
(ASHIFT:SHORT (match_operand:SHORT 1 "register_operand" "r")
diff -rupN gcc-4.9-20150225/gcc/testsuite/ChangeLog
gcc-4.9-20150225.pr64304//gcc/testsuite/ChangeLog
--- gcc-4.9-20150225/gcc/testsuite/ChangeLog 2015-03-04
21:00:24.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/testsuite/ChangeLog 2015-03-04
21:03:21.000000000 -0500
@@ -1,3 +1,10 @@
+2015-03-05 Shanyao chen<chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang<jiong.wang@arm.com>
+
+ * gcc.target/aarch64/pr64304.c: New testcase.
+
2015-02-25 Kai Tietz<ktietz@redhat.com>
Backported from mainline
diff -rupN gcc-4.9-20150225/gcc/testsuite/gcc.target/aarch64/pr64304.c
gcc-4.9-20150225.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c
--- gcc-4.9-20150225/gcc/testsuite/gcc.target/aarch64/pr64304.c
1969-12-31 19:00:00.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c
2015-03-04 20:59:24.000000000 -0500
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 --save-temps" } */
+
+unsigned char byte = 0;
+
+void
+set_bit (unsigned int bit, unsigned char value)
+{
+ unsigned char mask = (unsigned char) (1 << (bit & 7));
+
+ if (! value)
+ byte &= (unsigned char)~mask;
+ else
+ byte |= mask;
+ /* { dg-final { scan-assembler "and\tw\[0-9\]+, w\[0-9\]+, 7" } } */
+}
+
+/* { dg-final { cleanup-saved-temps } } */
+
[-- Attachment #2: pr64304-backport-4.8.patch --]
[-- Type: text/plain, Size: 3006 bytes --]
diff -rupN gcc-4.8-20150226/gcc/ChangeLog gcc-4.8-20150226.pr64304//gcc/ChangeLog
--- gcc-4.8-20150226/gcc/ChangeLog 2015-03-04 21:13:46.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/ChangeLog 2015-03-04 21:19:49.000000000 -0500
@@ -1,3 +1,13 @@
+2015-03-05 Shanyao Chen <chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang <jiong.wang@arm.com>
+ Andrew Pinski <apinski@cavium.com>
+
+ PR target/64304
+ * config/aarch64/aarch64.md (define_insn "*ashl<mode>3_insn"): Deleted.
+ (ashl<mode>3): Don't expand if operands[2] is not constant.
+
2015-02-26 Peter Bergner <bergner@vnet.ibm.com>
Backport from mainline
diff -rupN gcc-4.8-20150226/gcc/config/aarch64/aarch64.md gcc-4.8-20150226.pr64304//gcc/config/aarch64/aarch64.md
--- gcc-4.8-20150226/gcc/config/aarch64/aarch64.md 2015-03-04 21:14:29.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/config/aarch64/aarch64.md 2015-03-04 21:21:54.000000000 -0500
@@ -2612,6 +2612,8 @@
DONE;
}
}
+ else
+ FAIL;
}
)
@@ -2681,16 +2683,6 @@
(set_attr "mode" "SI")]
)
-(define_insn "*ashl<mode>3_insn"
- [(set (match_operand:SHORT 0 "register_operand" "=r")
- (ashift:SHORT (match_operand:SHORT 1 "register_operand" "r")
- (match_operand:QI 2 "aarch64_reg_or_shift_imm_si" "rUss")))]
- ""
- "lsl\\t%<w>0, %<w>1, %<w>2"
- [(set_attr "v8type" "shift")
- (set_attr "mode" "<MODE>")]
-)
-
(define_insn "*<optab><mode>3_insn"
[(set (match_operand:SHORT 0 "register_operand" "=r")
(ASHIFT:SHORT (match_operand:SHORT 1 "register_operand" "r")
diff -rupN gcc-4.8-20150226/gcc/testsuite/ChangeLog gcc-4.8-20150226.pr64304//gcc/testsuite/ChangeLog
--- gcc-4.8-20150226/gcc/testsuite/ChangeLog 2015-03-04 21:16:54.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/testsuite/ChangeLog 2015-03-04 21:22:58.000000000 -0500
@@ -1,3 +1,10 @@
+2015-03-05 Shanyao chen <chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang <jiong.wang@arm.com>
+
+ * gcc.target/aarch64/pr64304.c: New testcase.
+
2015-02-26 Peter Bergner <bergner@vnet.ibm.com>
Backport from mainline
diff -rupN gcc-4.8-20150226/gcc/testsuite/gcc.target/aarch64/pr64304.c gcc-4.8-20150226.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c
--- gcc-4.8-20150226/gcc/testsuite/gcc.target/aarch64/pr64304.c 1969-12-31 19:00:00.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c 2015-03-04 21:12:15.000000000 -0500
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 --save-temps" } */
+
+unsigned char byte = 0;
+
+void
+set_bit (unsigned int bit, unsigned char value)
+{
+ unsigned char mask = (unsigned char) (1 << (bit & 7));
+
+ if (! value)
+ byte &= (unsigned char)~mask;
+ else
+ byte |= mask;
+ /* { dg-final { scan-assembler "and\tw\[0-9\]+, w\[0-9\]+, 7" } } */
+}
+
+/* { dg-final { cleanup-saved-temps } } */
+
[-- Attachment #3: pr64304-backport-4.9.patch --]
[-- Type: text/plain, Size: 2906 bytes --]
diff -rupN gcc-4.9-20150225/gcc/ChangeLog gcc-4.9-20150225.pr64304//gcc/ChangeLog
--- gcc-4.9-20150225/gcc/ChangeLog 2015-03-04 20:48:30.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/ChangeLog 2015-03-04 20:55:59.000000000 -0500
@@ -1,3 +1,13 @@
+2015-03-05 Shanyao Chen <chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang <jiong.wang@arm.com>
+ Andrew Pinski <apinski@cavium.com>
+
+ PR target/64304
+ * config/aarch64/aarch64.md (define_insn "*ashl<mode>3_insn"): Deleted.
+ (ashl<mode>3): Don't expand if operands[2] is not constant.
+
2015-02-25 Kai Tietz <ktietz@redhat.com>
PR tree-optimization/61917
diff -rupN gcc-4.9-20150225/gcc/config/aarch64/aarch64.md gcc-4.9-20150225.pr64304//gcc/config/aarch64/aarch64.md
--- gcc-4.9-20150225/gcc/config/aarch64/aarch64.md 2015-03-04 20:41:03.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/config/aarch64/aarch64.md 2015-03-04 20:46:44.000000000 -0500
@@ -2719,6 +2719,8 @@
DONE;
}
}
+ else
+ FAIL;
}
)
@@ -2947,15 +2949,6 @@
[(set_attr "type" "shift_reg")]
)
-(define_insn "*ashl<mode>3_insn"
- [(set (match_operand:SHORT 0 "register_operand" "=r")
- (ashift:SHORT (match_operand:SHORT 1 "register_operand" "r")
- (match_operand:QI 2 "aarch64_reg_or_shift_imm_si" "rUss")))]
- ""
- "lsl\\t%<w>0, %<w>1, %<w>2"
- [(set_attr "type" "shift_reg")]
-)
-
(define_insn "*<optab><mode>3_insn"
[(set (match_operand:SHORT 0 "register_operand" "=r")
(ASHIFT:SHORT (match_operand:SHORT 1 "register_operand" "r")
diff -rupN gcc-4.9-20150225/gcc/testsuite/ChangeLog gcc-4.9-20150225.pr64304//gcc/testsuite/ChangeLog
--- gcc-4.9-20150225/gcc/testsuite/ChangeLog 2015-03-04 21:00:24.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/testsuite/ChangeLog 2015-03-04 21:03:21.000000000 -0500
@@ -1,3 +1,10 @@
+2015-03-05 Shanyao chen <chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang <jiong.wang@arm.com>
+
+ * gcc.target/aarch64/pr64304.c: New testcase.
+
2015-02-25 Kai Tietz <ktietz@redhat.com>
Backported from mainline
diff -rupN gcc-4.9-20150225/gcc/testsuite/gcc.target/aarch64/pr64304.c gcc-4.9-20150225.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c
--- gcc-4.9-20150225/gcc/testsuite/gcc.target/aarch64/pr64304.c 1969-12-31 19:00:00.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c 2015-03-04 20:59:24.000000000 -0500
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 --save-temps" } */
+
+unsigned char byte = 0;
+
+void
+set_bit (unsigned int bit, unsigned char value)
+{
+ unsigned char mask = (unsigned char) (1 << (bit & 7));
+
+ if (! value)
+ byte &= (unsigned char)~mask;
+ else
+ byte |= mask;
+ /* { dg-final { scan-assembler "and\tw\[0-9\]+, w\[0-9\]+, 7" } } */
+}
+
+/* { dg-final { cleanup-saved-temps } } */
+
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PING] [PATCH, AArch64] [4.8] [4.9] Backport PR64304 fix (miscompilation with -mgeneral-regs-only )
2015-03-05 6:36 [PATCH, AArch64] [4.8] [4.9] Backport PR64304 fix (miscompilation with -mgeneral-regs-only ) Chen Shanyao
@ 2015-03-12 11:59 ` Chen Shanyao
2015-04-29 15:24 ` Marcus Shawcroft
1 sibling, 0 replies; 3+ messages in thread
From: Chen Shanyao @ 2015-03-12 11:59 UTC (permalink / raw)
To: gcc-patches, marcus.shawcroft, richard.earnshaw, Yangfei (Felix)
[-- Attachment #1: Type: text/plain, Size: 6357 bytes --]
This backports the fixes for PR target/64304 , miscompilation with -mgeneral-regs-only, to the 4.8 & 4.9 branch from trunk r219844.
Tested on x86_64 by using qemu of aarch64.
OK for 4.8 & 4.9 ?
-------------------------------gcc-4.8---------------------------
diff -rupN gcc-4.8-20150226/gcc/ChangeLog
gcc-4.8-20150226.pr64304//gcc/ChangeLog
--- gcc-4.8-20150226/gcc/ChangeLog 2015-03-04 21:13:46.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/ChangeLog 2015-03-04
21:19:49.000000000 -0500
@@ -1,3 +1,13 @@
+2015-03-05 Shanyao Chen<chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang<jiong.wang@arm.com>
+ Andrew Pinski<apinski@cavium.com>
+
+ PR target/64304
+ * config/aarch64/aarch64.md (define_insn "*ashl<mode>3_insn"):
Deleted.
+ (ashl<mode>3): Don't expand if operands[2] is not constant.
+
2015-02-26 Peter Bergner<bergner@vnet.ibm.com>
Backport from mainline
diff -rupN gcc-4.8-20150226/gcc/config/aarch64/aarch64.md
gcc-4.8-20150226.pr64304//gcc/config/aarch64/aarch64.md
--- gcc-4.8-20150226/gcc/config/aarch64/aarch64.md 2015-03-04
21:14:29.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/config/aarch64/aarch64.md 2015-03-04
21:21:54.000000000 -0500
@@ -2612,6 +2612,8 @@
DONE;
}
}
+ else
+ FAIL;
}
)
@@ -2681,16 +2683,6 @@
(set_attr "mode" "SI")]
)
-(define_insn "*ashl<mode>3_insn"
- [(set (match_operand:SHORT 0 "register_operand" "=r")
- (ashift:SHORT (match_operand:SHORT 1 "register_operand" "r")
- (match_operand:QI 2 "aarch64_reg_or_shift_imm_si" "rUss")))]
- ""
- "lsl\\t%<w>0, %<w>1, %<w>2"
- [(set_attr "v8type" "shift")
- (set_attr "mode" "<MODE>")]
-)
-
(define_insn "*<optab><mode>3_insn"
[(set (match_operand:SHORT 0 "register_operand" "=r")
(ASHIFT:SHORT (match_operand:SHORT 1 "register_operand" "r")
diff -rupN gcc-4.8-20150226/gcc/testsuite/ChangeLog
gcc-4.8-20150226.pr64304//gcc/testsuite/ChangeLog
--- gcc-4.8-20150226/gcc/testsuite/ChangeLog 2015-03-04
21:16:54.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/testsuite/ChangeLog 2015-03-04
21:22:58.000000000 -0500
@@ -1,3 +1,10 @@
+2015-03-05 Shanyao chen<chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang<jiong.wang@arm.com>
+
+ * gcc.target/aarch64/pr64304.c: New testcase.
+
2015-02-26 Peter Bergner<bergner@vnet.ibm.com>
Backport from mainline
diff -rupN gcc-4.8-20150226/gcc/testsuite/gcc.target/aarch64/pr64304.c
gcc-4.8-20150226.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c
--- gcc-4.8-20150226/gcc/testsuite/gcc.target/aarch64/pr64304.c
1969-12-31 19:00:00.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c
2015-03-04 21:12:15.000000000 -0500
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 --save-temps" } */
+
+unsigned char byte = 0;
+
+void
+set_bit (unsigned int bit, unsigned char value)
+{
+ unsigned char mask = (unsigned char) (1 << (bit & 7));
+
+ if (! value)
+ byte &= (unsigned char)~mask;
+ else
+ byte |= mask;
+ /* { dg-final { scan-assembler "and\tw\[0-9\]+, w\[0-9\]+, 7" } } */
+}
+
+/* { dg-final { cleanup-saved-temps } } */
+
-------------------------------gcc-4.9---------------------------
diff -rupN gcc-4.9-20150225/gcc/ChangeLog
gcc-4.9-20150225.pr64304//gcc/ChangeLog
--- gcc-4.9-20150225/gcc/ChangeLog 2015-03-04 20:48:30.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/ChangeLog 2015-03-04
20:55:59.000000000 -0500
@@ -1,3 +1,13 @@
+2015-03-05 Shanyao Chen<chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang<jiong.wang@arm.com>
+ Andrew Pinski<apinski@cavium.com>
+
+ PR target/64304
+ * config/aarch64/aarch64.md (define_insn "*ashl<mode>3_insn"): Deleted.
+ (ashl<mode>3): Don't expand if operands[2] is not constant.
+
2015-02-25 Kai Tietz<ktietz@redhat.com>
PR tree-optimization/61917
diff -rupN gcc-4.9-20150225/gcc/config/aarch64/aarch64.md
gcc-4.9-20150225.pr64304//gcc/config/aarch64/aarch64.md
--- gcc-4.9-20150225/gcc/config/aarch64/aarch64.md 2015-03-04
20:41:03.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/config/aarch64/aarch64.md 2015-03-04
20:46:44.000000000 -0500
@@ -2719,6 +2719,8 @@
DONE;
}
}
+ else
+ FAIL;
}
)
@@ -2947,15 +2949,6 @@
[(set_attr "type" "shift_reg")]
)
-(define_insn "*ashl<mode>3_insn"
- [(set (match_operand:SHORT 0 "register_operand" "=r")
- (ashift:SHORT (match_operand:SHORT 1 "register_operand" "r")
- (match_operand:QI 2 "aarch64_reg_or_shift_imm_si" "rUss")))]
- ""
- "lsl\\t%<w>0, %<w>1, %<w>2"
- [(set_attr "type" "shift_reg")]
-)
-
(define_insn "*<optab><mode>3_insn"
[(set (match_operand:SHORT 0 "register_operand" "=r")
(ASHIFT:SHORT (match_operand:SHORT 1 "register_operand" "r")
diff -rupN gcc-4.9-20150225/gcc/testsuite/ChangeLog
gcc-4.9-20150225.pr64304//gcc/testsuite/ChangeLog
--- gcc-4.9-20150225/gcc/testsuite/ChangeLog 2015-03-04
21:00:24.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/testsuite/ChangeLog 2015-03-04
21:03:21.000000000 -0500
@@ -1,3 +1,10 @@
+2015-03-05 Shanyao chen<chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang<jiong.wang@arm.com>
+
+ * gcc.target/aarch64/pr64304.c: New testcase.
+
2015-02-25 Kai Tietz<ktietz@redhat.com>
Backported from mainline
diff -rupN gcc-4.9-20150225/gcc/testsuite/gcc.target/aarch64/pr64304.c
gcc-4.9-20150225.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c
--- gcc-4.9-20150225/gcc/testsuite/gcc.target/aarch64/pr64304.c
1969-12-31 19:00:00.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c
2015-03-04 20:59:24.000000000 -0500
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 --save-temps" } */
+
+unsigned char byte = 0;
+
+void
+set_bit (unsigned int bit, unsigned char value)
+{
+ unsigned char mask = (unsigned char) (1 << (bit & 7));
+
+ if (! value)
+ byte &= (unsigned char)~mask;
+ else
+ byte |= mask;
+ /* { dg-final { scan-assembler "and\tw\[0-9\]+, w\[0-9\]+, 7" } } */
+}
+
+/* { dg-final { cleanup-saved-temps } } */
+
[-- Attachment #2: pr64304-backport-4.8.patch --]
[-- Type: text/plain, Size: 3007 bytes --]
diff -rupN gcc-4.8-20150226/gcc/ChangeLog gcc-4.8-20150226.pr64304//gcc/ChangeLog
--- gcc-4.8-20150226/gcc/ChangeLog 2015-03-04 21:13:46.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/ChangeLog 2015-03-04 21:19:49.000000000 -0500
@@ -1,3 +1,13 @@
+2015-03-05 Shanyao Chen <chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang <jiong.wang@arm.com>
+ Andrew Pinski <apinski@cavium.com>
+
+ PR target/64304
+ * config/aarch64/aarch64.md (define_insn "*ashl<mode>3_insn"): Deleted.
+ (ashl<mode>3): Don't expand if operands[2] is not constant.
+
2015-02-26 Peter Bergner <bergner@vnet.ibm.com>
Backport from mainline
diff -rupN gcc-4.8-20150226/gcc/config/aarch64/aarch64.md gcc-4.8-20150226.pr64304//gcc/config/aarch64/aarch64.md
--- gcc-4.8-20150226/gcc/config/aarch64/aarch64.md 2015-03-04 21:14:29.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/config/aarch64/aarch64.md 2015-03-04 21:21:54.000000000 -0500
@@ -2612,6 +2612,8 @@
DONE;
}
}
+ else
+ FAIL;
}
)
@@ -2681,16 +2683,6 @@
(set_attr "mode" "SI")]
)
-(define_insn "*ashl<mode>3_insn"
- [(set (match_operand:SHORT 0 "register_operand" "=r")
- (ashift:SHORT (match_operand:SHORT 1 "register_operand" "r")
- (match_operand:QI 2 "aarch64_reg_or_shift_imm_si" "rUss")))]
- ""
- "lsl\\t%<w>0, %<w>1, %<w>2"
- [(set_attr "v8type" "shift")
- (set_attr "mode" "<MODE>")]
-)
-
(define_insn "*<optab><mode>3_insn"
[(set (match_operand:SHORT 0 "register_operand" "=r")
(ASHIFT:SHORT (match_operand:SHORT 1 "register_operand" "r")
diff -rupN gcc-4.8-20150226/gcc/testsuite/ChangeLog gcc-4.8-20150226.pr64304//gcc/testsuite/ChangeLog
--- gcc-4.8-20150226/gcc/testsuite/ChangeLog 2015-03-04 21:16:54.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/testsuite/ChangeLog 2015-03-04 21:22:58.000000000 -0500
@@ -1,3 +1,10 @@
+2015-03-05 Shanyao chen <chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang <jiong.wang@arm.com>
+
+ * gcc.target/aarch64/pr64304.c: New testcase.
+
2015-02-26 Peter Bergner <bergner@vnet.ibm.com>
Backport from mainline
diff -rupN gcc-4.8-20150226/gcc/testsuite/gcc.target/aarch64/pr64304.c gcc-4.8-20150226.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c
--- gcc-4.8-20150226/gcc/testsuite/gcc.target/aarch64/pr64304.c 1969-12-31 19:00:00.000000000 -0500
+++ gcc-4.8-20150226.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c 2015-03-04 21:12:15.000000000 -0500
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 --save-temps" } */
+
+unsigned char byte = 0;
+
+void
+set_bit (unsigned int bit, unsigned char value)
+{
+ unsigned char mask = (unsigned char) (1 << (bit & 7));
+
+ if (! value)
+ byte &= (unsigned char)~mask;
+ else
+ byte |= mask;
+ /* { dg-final { scan-assembler "and\tw\[0-9\]+, w\[0-9\]+, 7" } } */
+}
+
+/* { dg-final { cleanup-saved-temps } } */
+
[-- Attachment #3: pr64304-backport-4.9.patch --]
[-- Type: text/plain, Size: 2907 bytes --]
diff -rupN gcc-4.9-20150225/gcc/ChangeLog gcc-4.9-20150225.pr64304//gcc/ChangeLog
--- gcc-4.9-20150225/gcc/ChangeLog 2015-03-04 20:48:30.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/ChangeLog 2015-03-04 20:55:59.000000000 -0500
@@ -1,3 +1,13 @@
+2015-03-05 Shanyao Chen <chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang <jiong.wang@arm.com>
+ Andrew Pinski <apinski@cavium.com>
+
+ PR target/64304
+ * config/aarch64/aarch64.md (define_insn "*ashl<mode>3_insn"): Deleted.
+ (ashl<mode>3): Don't expand if operands[2] is not constant.
+
2015-02-25 Kai Tietz <ktietz@redhat.com>
PR tree-optimization/61917
diff -rupN gcc-4.9-20150225/gcc/config/aarch64/aarch64.md gcc-4.9-20150225.pr64304//gcc/config/aarch64/aarch64.md
--- gcc-4.9-20150225/gcc/config/aarch64/aarch64.md 2015-03-04 20:41:03.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/config/aarch64/aarch64.md 2015-03-04 20:46:44.000000000 -0500
@@ -2719,6 +2719,8 @@
DONE;
}
}
+ else
+ FAIL;
}
)
@@ -2947,15 +2949,6 @@
[(set_attr "type" "shift_reg")]
)
-(define_insn "*ashl<mode>3_insn"
- [(set (match_operand:SHORT 0 "register_operand" "=r")
- (ashift:SHORT (match_operand:SHORT 1 "register_operand" "r")
- (match_operand:QI 2 "aarch64_reg_or_shift_imm_si" "rUss")))]
- ""
- "lsl\\t%<w>0, %<w>1, %<w>2"
- [(set_attr "type" "shift_reg")]
-)
-
(define_insn "*<optab><mode>3_insn"
[(set (match_operand:SHORT 0 "register_operand" "=r")
(ASHIFT:SHORT (match_operand:SHORT 1 "register_operand" "r")
diff -rupN gcc-4.9-20150225/gcc/testsuite/ChangeLog gcc-4.9-20150225.pr64304//gcc/testsuite/ChangeLog
--- gcc-4.9-20150225/gcc/testsuite/ChangeLog 2015-03-04 21:00:24.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/testsuite/ChangeLog 2015-03-04 21:03:21.000000000 -0500
@@ -1,3 +1,10 @@
+2015-03-05 Shanyao chen <chenshanyao@huawei.com>
+
+ Backported from mainline
+ 2015-01-19 Jiong Wang <jiong.wang@arm.com>
+
+ * gcc.target/aarch64/pr64304.c: New testcase.
+
2015-02-25 Kai Tietz <ktietz@redhat.com>
Backported from mainline
diff -rupN gcc-4.9-20150225/gcc/testsuite/gcc.target/aarch64/pr64304.c gcc-4.9-20150225.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c
--- gcc-4.9-20150225/gcc/testsuite/gcc.target/aarch64/pr64304.c 1969-12-31 19:00:00.000000000 -0500
+++ gcc-4.9-20150225.pr64304//gcc/testsuite/gcc.target/aarch64/pr64304.c 2015-03-04 20:59:24.000000000 -0500
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 --save-temps" } */
+
+unsigned char byte = 0;
+
+void
+set_bit (unsigned int bit, unsigned char value)
+{
+ unsigned char mask = (unsigned char) (1 << (bit & 7));
+
+ if (! value)
+ byte &= (unsigned char)~mask;
+ else
+ byte |= mask;
+ /* { dg-final { scan-assembler "and\tw\[0-9\]+, w\[0-9\]+, 7" } } */
+}
+
+/* { dg-final { cleanup-saved-temps } } */
+
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH, AArch64] [4.8] [4.9] Backport PR64304 fix (miscompilation with -mgeneral-regs-only )
2015-03-05 6:36 [PATCH, AArch64] [4.8] [4.9] Backport PR64304 fix (miscompilation with -mgeneral-regs-only ) Chen Shanyao
2015-03-12 11:59 ` [PING] " Chen Shanyao
@ 2015-04-29 15:24 ` Marcus Shawcroft
1 sibling, 0 replies; 3+ messages in thread
From: Marcus Shawcroft @ 2015-04-29 15:24 UTC (permalink / raw)
To: Chen Shanyao; +Cc: gcc-patches, Yangfei (Felix)
Picking up this old back port request...
On 5 March 2015 at 06:36, Chen Shanyao <chenshanyao@huawei.com> wrote:
> +2015-03-05 Shanyao Chen<chenshanyao@huawei.com>
There should be two spaces after the date and two before the < marker
in a ChangeLog name line. This comment applies to each of the
ChangeLogs presented.
> +/* { dg-final { cleanup-saved-temps } } */
> +
An additional line appears to have been inserted at the end of this
test case. I would have expected the test case to be identical to the
one committed on trunk.
By convention we only post one patch per email to gcc-patches. Please
fix the comments above and re-post in separate emails for each patch.
Thanks /Marcus
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-04-29 15:20 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-05 6:36 [PATCH, AArch64] [4.8] [4.9] Backport PR64304 fix (miscompilation with -mgeneral-regs-only ) Chen Shanyao
2015-03-12 11:59 ` [PING] " Chen Shanyao
2015-04-29 15:24 ` Marcus Shawcroft
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).