| OLD | NEW |
| 1 ; Tests the branch optimizations under O2 (against a lack of | 1 ; Tests the branch optimizations under O2 (against a lack of |
| 2 ; optimizations under Om1). | 2 ; optimizations under Om1). |
| 3 | 3 |
| 4 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ | 4 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
| 5 ; RUN: --target x8632 -i %s --args -O2 \ | 5 ; RUN: --target x8632 -i %s --args -O2 \ |
| 6 ; RUN: | %if --need=target_X8632 --command FileCheck --check-prefix=O2 %s | 6 ; RUN: | %if --need=target_X8632 --command FileCheck --check-prefix=O2 %s |
| 7 | 7 |
| 8 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ | 8 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
| 9 ; RUN: --target x8632 -i %s --args -Om1 \ | 9 ; RUN: --target x8632 -i %s --args -Om1 \ |
| 10 ; RUN: | %if --need=target_X8632 --command FileCheck --check-prefix=OM1 %s | 10 ; RUN: | %if --need=target_X8632 --command FileCheck --check-prefix=OM1 %s |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 ; ARM32OM1-LABEL: testCondTargetNextBlock | 162 ; ARM32OM1-LABEL: testCondTargetNextBlock |
| 163 ; ARM32OM1: cmp {{.*}}, #123 | 163 ; ARM32OM1: cmp {{.*}}, #123 |
| 164 ; ARM32OM1: movge {{.*}}, #1 | 164 ; ARM32OM1: movge {{.*}}, #1 |
| 165 ; ARM32OM1: cmp {{.*}}, #0 | 165 ; ARM32OM1: cmp {{.*}}, #0 |
| 166 ; ARM32OM1: bne | 166 ; ARM32OM1: bne |
| 167 ; ARM32OM1: b | 167 ; ARM32OM1: b |
| 168 ; ARM32OM1: bl | 168 ; ARM32OM1: bl |
| 169 ; ARM32OM1: bx lr | 169 ; ARM32OM1: bx lr |
| 170 ; ARM32OM1: bl | 170 ; ARM32OM1: bl |
| 171 ; ARM32OM1: bx lr | 171 ; ARM32OM1: bx lr |
| 172 |
| 173 ; Unconditional branches to the block after a contracted block should be |
| 174 ; removed. |
| 175 define void @testUncondToBlockAfterContract() { |
| 176 entry: |
| 177 call void @dummy() |
| 178 br label %target |
| 179 contract: |
| 180 br label %target |
| 181 target: |
| 182 call void @dummy() |
| 183 ret void |
| 184 } |
| 185 |
| 186 ; O2-LABEL: testUncondToBlockAfterContract |
| 187 ; O2: call |
| 188 ; There will be nops for bundle align to end (for NaCl), but there should |
| 189 ; not be a branch. |
| 190 ; O2-NOT: j |
| 191 ; O2: call |
| 192 |
| 193 ; OM1-LABEL: testUncondToBlockAfterContract |
| 194 ; OM1: call |
| 195 ; OM1-NEXT: jmp |
| 196 ; OM1: call |
| 197 |
| 198 ; ARM32O2-LABEL: testUncondToBlockAfterContract |
| 199 ; ARM32O2: bl {{.*}} dummy |
| 200 ; ARM32O2-NEXT: bl {{.*}} dummy |
| 201 |
| 202 ; ARM32OM1-LABEL: testUncondToBlockAfterContract |
| 203 ; ARM32OM1: bl {{.*}} dummy |
| 204 ; ARM32OM1-NEXT: b |
| 205 ; ARM32OM1-NEXT: bl {{.*}} dummy |
| OLD | NEW |