
We propose adding a new LLVM attribute, `initializes((Lo1,Hi1),(Lo2,Hi2),...)`, which expresses the notion of memory space (i.e., intervals, in bytes) that the argument pointing to is initialized in the function. Will commit the attribute inferring in the follow-up PRs. https://discourse.llvm.org/t/rfc-llvm-new-initialized-parameter-attribute-for-improved-interprocedural-dse/77337
72 lines
2.2 KiB
LLVM
72 lines
2.2 KiB
LLVM
; RUN: split-file %s %t
|
|
; RUN: not llvm-as < %s %t/outer_left_parenthesis.ll -o /dev/null 2>&1 | FileCheck %s --check-prefix=OUTER-LEFT
|
|
; RUN: not llvm-as < %s %t/inner_left_parenthesis.ll -o /dev/null 2>&1 | FileCheck %s --check-prefix=INNER-LEFT
|
|
; RUN: not llvm-as < %s %t/inner_right_parenthesis.ll -o /dev/null 2>&1 | FileCheck %s --check-prefix=INNER-RIGHT
|
|
; RUN: not llvm-as < %s %t/outer_right_parenthesis.ll -o /dev/null 2>&1 | FileCheck %s --check-prefix=OUTER-RIGHT
|
|
; RUN: not llvm-as < %s %t/integer.ll -o /dev/null 2>&1 | FileCheck %s --check-prefix=INTEGER
|
|
; RUN: not llvm-as < %s %t/lower_equal_upper.ll -o /dev/null 2>&1 | FileCheck %s --check-prefix=LOWER-EQUAL-UPPER
|
|
; RUN: not llvm-as < %s %t/inner_comma.ll -o /dev/null 2>&1 | FileCheck %s --check-prefix=INNER-COMMA
|
|
; RUN: not llvm-as < %s %t/outer_comma.ll -o /dev/null 2>&1 | FileCheck %s --check-prefix=OUTER-COMMA
|
|
; RUN: not llvm-as < %s %t/empty1.ll -o /dev/null 2>&1 | FileCheck %s --check-prefix=EMPTY1
|
|
; RUN: not llvm-as < %s %t/empty2.ll -o /dev/null 2>&1 | FileCheck %s --check-prefix=EMPTY2
|
|
|
|
;--- outer_left_parenthesis.ll
|
|
; OUTER-LEFT: expected '('
|
|
define void @foo(ptr initializes 0, 4 %a) {
|
|
ret void
|
|
}
|
|
|
|
;--- inner_left_parenthesis.ll
|
|
; INNER-LEFT: expected '('
|
|
define void @foo(ptr initializes(0, 4 %a) {
|
|
ret void
|
|
}
|
|
|
|
;--- inner_right_parenthesis.ll
|
|
; INNER-RIGHT: expected ')'
|
|
define void @foo(ptr initializes((0, 4 %a) {
|
|
ret void
|
|
}
|
|
|
|
;--- outer_right_parenthesis.ll
|
|
; OUTER-RIGHT: expected ')'
|
|
define void @foo(ptr initializes((0, 4) %a) {
|
|
ret void
|
|
}
|
|
|
|
;--- integer.ll
|
|
; INTEGER: expected integer
|
|
define void @foo(ptr initializes((0.5, 4)) %a) {
|
|
ret void
|
|
}
|
|
|
|
;--- lower_equal_upper.ll
|
|
; LOWER-EQUAL-UPPER: the range should not represent the full or empty set!
|
|
define void @foo(ptr initializes((4, 4)) %a) {
|
|
ret void
|
|
}
|
|
|
|
;--- inner_comma.ll
|
|
; INNER-COMMA: expected ','
|
|
define void @foo(ptr initializes((0 4)) %a) {
|
|
ret void
|
|
}
|
|
|
|
;--- outer_comma.ll
|
|
; OUTER-COMMA: expected ')'
|
|
define void @foo(ptr initializes((0, 4) (8, 12)) %a) {
|
|
ret void
|
|
}
|
|
|
|
;--- empty1.ll
|
|
; EMPTY1: expected '('
|
|
define void @foo(ptr initializes() %a) {
|
|
ret void
|
|
}
|
|
|
|
;--- empty2.ll
|
|
; EMPTY2: expected integer
|
|
define void @foo(ptr initializes(()) %a) {
|
|
ret void
|
|
}
|