Merge lp:~rsandifo/gcc-linaro/lp823708-4.6 into lp:gcc-linaro/4.6

Proposed by Richard Sandiford
Status: Merged
Approved by: Ramana Radhakrishnan
Approved revision: no longer in the source branch.
Merged at revision: 106803
Proposed branch: lp:~rsandifo/gcc-linaro/lp823708-4.6
Merge into: lp:gcc-linaro/4.6
Diff against target: 208 lines (+65/-20)
5 files modified
ChangeLog.linaro (+17/-0)
gcc/config/arm/arm-protos.h (+1/-0)
gcc/config/arm/arm.c (+25/-16)
gcc/config/arm/predicates.md (+3/-4)
gcc/testsuite/gcc.dg/torture/pr49030.c (+19/-0)
To merge this branch: bzr merge lp:~rsandifo/gcc-linaro/lp823708-4.6
Reviewer Review Type Date Requested Status
Linaro Toolchain Developers Pending
Review via email: mp+74070@code.launchpad.net

Description of the change

Testing whether the patch survives a Thumb-2 bootstrap.

To post a comment you must log in.
Revision history for this message
Michael Hope (michaelh1) wrote :

cbuild has taken a snapshot of this branch at r106798 and queued it for build.

The snapshot is available at:
 http://ex.seabright.co.nz/snapshots/gcc-linaro-4.6+bzr106798~rsandifo~lp823708-4.6.tar.xdelta3.xz

and will be built on the following builders:
 a9-builder armv5-builder baremetal i686 x86_64

You can track the build queue at:
 http://ex.seabright.co.nz/helpers/scheduler

cbuild-snapshot: gcc-linaro-4.6+bzr106798~rsandifo~lp823708-4.6
cbuild-ancestor: lp:gcc-linaro/4.6+bzr106797
cbuild-state: check

Revision history for this message
Michael Hope (michaelh1) wrote :

cbuild successfully built this on i686-natty-cbuild180-oort2-i686r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106798~rsandifo~lp823708-4.6/logs/i686-natty-cbuild180-oort2-i686r1

+PASS: gcc.dg/torture/pr49030.c -O0 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O1 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 -flto (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 -flto -flto-partition=none (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer -funroll-loops (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -g (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -Os (test for excess errors)

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106798~rsandifo~lp823708-4.6/logs/i686-natty-cbuild180-oort2-i686r1/gcc-testsuite.txt

cbuild-checked: i686-natty-cbuild180-oort2-i686r1

Revision history for this message
Michael Hope (michaelh1) wrote :

cbuild successfully built this on x86_64-natty-cbuild180-oort1-x86_64r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106798~rsandifo~lp823708-4.6/logs/x86_64-natty-cbuild180-oort1-x86_64r1

+PASS: gcc.dg/torture/pr49030.c -O0 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O1 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 -flto (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 -flto -flto-partition=none (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer -funroll-loops (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -g (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -Os (test for excess errors)

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106798~rsandifo~lp823708-4.6/logs/x86_64-natty-cbuild180-oort1-x86_64r1/gcc-testsuite.txt

cbuild-checked: x86_64-natty-cbuild180-oort1-x86_64r1

Revision history for this message
Michael Hope (michaelh1) wrote :

cbuild successfully built this on armv7l-natty-cbuild180-ursa2-cortexa9r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106798~rsandifo~lp823708-4.6/logs/armv7l-natty-cbuild180-ursa2-cortexa9r1

+PASS: gcc.dg/torture/pr49030.c -O0 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O1 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 -flto (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 -flto -flto-partition=none (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer -funroll-loops (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -g (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -Os (test for excess errors)

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106798~rsandifo~lp823708-4.6/logs/armv7l-natty-cbuild180-ursa2-cortexa9r1/gcc-testsuite.txt

cbuild-checked: armv7l-natty-cbuild180-ursa2-cortexa9r1

Revision history for this message
Richard Sandiford (rsandifo) wrote :

The patch has now been accepted upstream.

Revision history for this message
Michael Hope (michaelh1) wrote :

cbuild successfully built this on armv7l-natty-cbuild180-ursa3-armv5r2.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106798~rsandifo~lp823708-4.6/logs/armv7l-natty-cbuild180-ursa3-armv5r2

+PASS: gcc.dg/torture/pr49030.c -O0 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O1 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 -flto (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 -flto -flto-partition=none (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer -funroll-loops (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -g (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -Os (test for excess errors)

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106798~rsandifo~lp823708-4.6/logs/armv7l-natty-cbuild180-ursa3-armv5r2/gcc-testsuite.txt

cbuild-checked: armv7l-natty-cbuild180-ursa3-armv5r2

Revision history for this message
Michael Hope (michaelh1) wrote :

cbuild successfully built this on armv7l-natty-cbuild180-ursa4-cortexa9r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106798~rsandifo~lp823708-4.6/logs/armv7l-natty-cbuild180-ursa4-cortexa9r1

+PASS: gcc.dg/torture/pr49030.c -O0 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O1 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 -flto (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O2 -flto -flto-partition=none (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -fomit-frame-pointer -funroll-loops (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -O3 -g (test for excess errors)
+PASS: gcc.dg/torture/pr49030.c -Os (test for excess errors)

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106798~rsandifo~lp823708-4.6/logs/armv7l-natty-cbuild180-ursa4-cortexa9r1/gcc-testsuite.txt

cbuild-checked: armv7l-natty-cbuild180-ursa4-cortexa9r1

Revision history for this message
Michael Hope (michaelh1) wrote :

The 4.5 version is at lp:~rsandifo/gcc-linaro/lp823708-4.5

It failed bootstrap on Thumb-2 but passed on ARMv5. Richard wants to investigate before committing this branch.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ChangeLog.linaro'
2--- ChangeLog.linaro 2011-08-26 14:32:47 +0000
3+++ ChangeLog.linaro 2011-09-05 10:33:49 +0000
4@@ -1,3 +1,20 @@
5+2011-09-05 Richard Sandiford <richard.sandiford@linaro.org>
6+
7+ gcc/
8+ PR target/49030
9+ * config/arm/arm-protos.h (maybe_get_arm_condition_code): Declare.
10+ * config/arm/arm.c (maybe_get_arm_condition_code): New function,
11+ reusing the old code from get_arm_condition_code. Return ARM_NV
12+ for invalid comparison codes.
13+ (get_arm_condition_code): Redefine in terms of
14+ maybe_get_arm_condition_code.
15+ * config/arm/predicates.md (arm_comparison_operator): Use
16+ maybe_get_arm_condition_code.
17+
18+ gcc/testsuite/
19+ PR target/49030
20+ * gcc.dg/torture/pr49030.c: New test.
21+
22 2011-08-26 Richard Sandiford <richard.sandiford@linaro.org>
23
24 gcc/
25
26=== modified file 'gcc/config/arm/arm-protos.h'
27--- gcc/config/arm/arm-protos.h 2011-07-04 14:03:49 +0000
28+++ gcc/config/arm/arm-protos.h 2011-09-05 10:33:49 +0000
29@@ -178,6 +178,7 @@
30 #endif
31 extern int thumb_shiftable_const (unsigned HOST_WIDE_INT);
32 #ifdef RTX_CODE
33+extern enum arm_cond_code maybe_get_arm_condition_code (rtx);
34 extern void thumb1_final_prescan_insn (rtx);
35 extern void thumb2_final_prescan_insn (rtx);
36 extern const char *thumb_load_double_from_address (rtx *);
37
38=== modified file 'gcc/config/arm/arm.c'
39--- gcc/config/arm/arm.c 2011-08-24 17:35:16 +0000
40+++ gcc/config/arm/arm.c 2011-09-05 10:33:49 +0000
41@@ -17389,10 +17389,10 @@
42 decremented/zeroed by arm_asm_output_opcode as the insns are output. */
43
44 /* Returns the index of the ARM condition code string in
45- `arm_condition_codes'. COMPARISON should be an rtx like
46- `(eq (...) (...))'. */
47-static enum arm_cond_code
48-get_arm_condition_code (rtx comparison)
49+ `arm_condition_codes', or ARM_NV if the comparison is invalid.
50+ COMPARISON should be an rtx like `(eq (...) (...))'. */
51+enum arm_cond_code
52+maybe_get_arm_condition_code (rtx comparison)
53 {
54 enum machine_mode mode = GET_MODE (XEXP (comparison, 0));
55 enum arm_cond_code code;
56@@ -17416,11 +17416,11 @@
57 case CC_DLTUmode: code = ARM_CC;
58
59 dominance:
60- gcc_assert (comp_code == EQ || comp_code == NE);
61-
62 if (comp_code == EQ)
63 return ARM_INVERSE_CONDITION_CODE (code);
64- return code;
65+ if (comp_code == NE)
66+ return code;
67+ return ARM_NV;
68
69 case CC_NOOVmode:
70 switch (comp_code)
71@@ -17429,7 +17429,7 @@
72 case EQ: return ARM_EQ;
73 case GE: return ARM_PL;
74 case LT: return ARM_MI;
75- default: gcc_unreachable ();
76+ default: return ARM_NV;
77 }
78
79 case CC_Zmode:
80@@ -17437,7 +17437,7 @@
81 {
82 case NE: return ARM_NE;
83 case EQ: return ARM_EQ;
84- default: gcc_unreachable ();
85+ default: return ARM_NV;
86 }
87
88 case CC_Nmode:
89@@ -17445,7 +17445,7 @@
90 {
91 case NE: return ARM_MI;
92 case EQ: return ARM_PL;
93- default: gcc_unreachable ();
94+ default: return ARM_NV;
95 }
96
97 case CCFPEmode:
98@@ -17470,7 +17470,7 @@
99 /* UNEQ and LTGT do not have a representation. */
100 case UNEQ: /* Fall through. */
101 case LTGT: /* Fall through. */
102- default: gcc_unreachable ();
103+ default: return ARM_NV;
104 }
105
106 case CC_SWPmode:
107@@ -17486,7 +17486,7 @@
108 case GTU: return ARM_CC;
109 case LEU: return ARM_CS;
110 case LTU: return ARM_HI;
111- default: gcc_unreachable ();
112+ default: return ARM_NV;
113 }
114
115 case CC_Cmode:
116@@ -17494,7 +17494,7 @@
117 {
118 case LTU: return ARM_CS;
119 case GEU: return ARM_CC;
120- default: gcc_unreachable ();
121+ default: return ARM_NV;
122 }
123
124 case CC_CZmode:
125@@ -17506,7 +17506,7 @@
126 case GTU: return ARM_HI;
127 case LEU: return ARM_LS;
128 case LTU: return ARM_CC;
129- default: gcc_unreachable ();
130+ default: return ARM_NV;
131 }
132
133 case CC_NCVmode:
134@@ -17516,7 +17516,7 @@
135 case LT: return ARM_LT;
136 case GEU: return ARM_CS;
137 case LTU: return ARM_CC;
138- default: gcc_unreachable ();
139+ default: return ARM_NV;
140 }
141
142 case CCmode:
143@@ -17532,13 +17532,22 @@
144 case GTU: return ARM_HI;
145 case LEU: return ARM_LS;
146 case LTU: return ARM_CC;
147- default: gcc_unreachable ();
148+ default: return ARM_NV;
149 }
150
151 default: gcc_unreachable ();
152 }
153 }
154
155+/* Like maybe_get_arm_condition_code, but never return ARM_NV. */
156+static enum arm_cond_code
157+get_arm_condition_code (rtx comparison)
158+{
159+ enum arm_cond_code code = maybe_get_arm_condition_code (comparison);
160+ gcc_assert (code != ARM_NV);
161+ return code;
162+}
163+
164 /* Tell arm_asm_output_opcode to output IT blocks for conditionally executed
165 instructions. */
166 void
167
168=== modified file 'gcc/config/arm/predicates.md'
169--- gcc/config/arm/predicates.md 2011-08-13 08:40:36 +0000
170+++ gcc/config/arm/predicates.md 2011-09-05 10:33:49 +0000
171@@ -242,10 +242,9 @@
172 ;; True for integer comparisons and, if FP is active, for comparisons
173 ;; other than LTGT or UNEQ.
174 (define_special_predicate "arm_comparison_operator"
175- (ior (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu")
176- (and (match_test "TARGET_32BIT && TARGET_HARD_FLOAT
177- && (TARGET_FPA || TARGET_VFP)")
178- (match_code "unordered,ordered,unlt,unle,unge,ungt"))))
179+ (and (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu,
180+ unordered,ordered,unlt,unle,unge,ungt")
181+ (match_test "maybe_get_arm_condition_code (op) != ARM_NV")))
182
183 (define_special_predicate "lt_ge_comparison_operator"
184 (match_code "lt,ge"))
185
186=== added file 'gcc/testsuite/gcc.dg/torture/pr49030.c'
187--- gcc/testsuite/gcc.dg/torture/pr49030.c 1970-01-01 00:00:00 +0000
188+++ gcc/testsuite/gcc.dg/torture/pr49030.c 2011-09-05 10:33:49 +0000
189@@ -0,0 +1,19 @@
190+void
191+sample_move_d32u24_sS (char *dst, float *src, unsigned long nsamples,
192+ unsigned long dst_skip)
193+{
194+ long long y;
195+ while (nsamples--)
196+ {
197+ y = (long long) (*src * 8388608.0f) << 8;
198+ if (y > 2147483647) {
199+ *(int *) dst = 2147483647;
200+ } else if (y < -2147483647 - 1) {
201+ *(int *) dst = -2147483647 - 1;
202+ } else {
203+ *(int *) dst = (int) y;
204+ }
205+ dst += dst_skip;
206+ src++;
207+ }
208+}

Subscribers

People subscribed via source and target branches