| ; RUN: opt -consthoist -S < %s | FileCheck %s |
| target triple = "thumbv6m-none-eabi" |
| |
| %T = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, |
| i32, i32, i32, i32, i32, i32 } |
| |
| ; The second operand of insertvalue is able to be hoisted. |
| define void @test1(%T %P) { |
| ; CHECK-LABEL: @test1 |
| ; CHECK: %const = bitcast i32 256 to i32 |
| ; CHECK: %1 = insertvalue %T %P, i32 %const, 256 |
| ; CHECK: %2 = insertvalue %T %P, i32 %const, 256 |
| %1 = insertvalue %T %P, i32 256, 256 |
| %2 = insertvalue %T %P, i32 256, 256 |
| ret void |
| } |