
Remove support for the mul constant expression, which has previously already been marked as undesirable. This removes the APIs to create mul expressions and updates tests to stop using mul expressions. Part of: https://discourse.llvm.org/t/rfc-remove-most-constant-expressions/63179
31 lines
1.0 KiB
LLVM
31 lines
1.0 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals
|
|
; RUN: opt < %s -passes=globalopt -S | FileCheck %s
|
|
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
|
|
|
@G = internal global ptr null
|
|
|
|
;.
|
|
; CHECK: @[[G:[a-zA-Z0-9_$"\\.-]+]] = internal unnamed_addr global ptr null
|
|
;.
|
|
define void @t() {
|
|
; CHECK-LABEL: @t(
|
|
; CHECK-NEXT: [[MALLOCCALL:%.*]] = tail call ptr @malloc(i64 400) #[[ATTR0:[0-9]+]]
|
|
; CHECK-NEXT: store ptr [[MALLOCCALL]], ptr @G, align 8
|
|
; CHECK-NEXT: [[GV:%.*]] = load ptr, ptr @G, align 8
|
|
; CHECK-NEXT: [[GVE:%.*]] = getelementptr i32, ptr [[GV]], i32 40
|
|
; CHECK-NEXT: store i32 20, ptr [[GVE]], align 4
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
%malloccall = tail call ptr @malloc(i64 400) nobuiltin
|
|
store ptr %malloccall, ptr @G
|
|
%GV = load ptr, ptr @G
|
|
%GVe = getelementptr i32, ptr %GV, i32 40
|
|
store i32 20, ptr %GVe
|
|
ret void
|
|
}
|
|
|
|
declare noalias ptr @malloc(i64)
|
|
;.
|
|
; CHECK: attributes #[[ATTR0]] = { nobuiltin }
|
|
;.
|