
This removes the insertvalue constant expression, as part of https://discourse.llvm.org/t/rfc-remove-most-constant-expressions/63179. This is very similar to the extractvalue removal from D125795. insertvalue is also not supported in bitcode, so no auto-ugprade is necessary. ConstantExpr::getInsertValue() can be replaced with IRBuilder::CreateInsertValue() or ConstantFoldInsertValueInstruction(), depending on whether a constant result is required (with the latter being fallible). The ConstantExpr::hasIndices() and ConstantExpr::getIndices() methods also go away here, because there are no longer any constant expressions with indices. Differential Revision: https://reviews.llvm.org/D128719
17 lines
548 B
LLVM
17 lines
548 B
LLVM
; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
|
|
; RUN: verify-uselistorder %s
|
|
|
|
; CHECK: @foo
|
|
; CHECK-NEXT: load
|
|
; CHECK-NEXT: extractvalue
|
|
; CHECK-NEXT: insertvalue
|
|
; CHECK-NEXT: store
|
|
; CHECK-NEXT: ret
|
|
define float @foo({{i32},{float, double}}* %p) nounwind {
|
|
%t = load {{i32},{float, double}}, {{i32},{float, double}}* %p
|
|
%s = extractvalue {{i32},{float, double}} %t, 1, 0
|
|
%r = insertvalue {{i32},{float, double}} %t, double 2.0, 1, 1
|
|
store {{i32},{float, double}} %r, {{i32},{float, double}}* %p
|
|
ret float %s
|
|
}
|