summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/Inline
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2018-11-29 07:27:38 +0000
committerCraig Topper <craig.topper@intel.com>2018-11-29 07:27:38 +0000
commit961b956eb417224d3ff97fafb95c8e451be388a2 (patch)
tree632345919fd4f2edaf3e90c1f77012aaac22064d /llvm/test/Transforms/Inline
parent645cc6e331551fb766fe1bfef6a9842b6e290992 (diff)
downloadbcm5719-llvm-961b956eb417224d3ff97fafb95c8e451be388a2.tar.gz
bcm5719-llvm-961b956eb417224d3ff97fafb95c8e451be388a2.zip
[Inliner] Modify the merging of min-legal-vector-width attribute to better handle when the caller or callee don't have the attribute.
Lack of an attribute means that the function hasn't been checked for what vector width it requires. So if the caller or the callee doesn't have the attribute we should make sure the combined function after inlining does not have the attribute. If the caller already doesn't have the attribute we can just avoid adding it. Otherwise if the callee doesn't have the attribute just remove the caller's attribute. llvm-svn: 347841
Diffstat (limited to 'llvm/test/Transforms/Inline')
-rw-r--r--llvm/test/Transforms/Inline/inline-min-legal-vector-width.ll17
1 files changed, 16 insertions, 1 deletions
diff --git a/llvm/test/Transforms/Inline/inline-min-legal-vector-width.ll b/llvm/test/Transforms/Inline/inline-min-legal-vector-width.ll
index cc00b5e00a7..ec727419f01 100644
--- a/llvm/test/Transforms/Inline/inline-min-legal-vector-width.ll
+++ b/llvm/test/Transforms/Inline/inline-min-legal-vector-width.ll
@@ -8,6 +8,13 @@ define internal void @innerLarge() "min-legal-vector-width"="512" {
ret void
}
+define internal void @innerNoAttribute() {
+ ret void
+}
+
+; We should not add an attribute during inlining. No attribute means unknown.
+; Inlining doesn't change the fact that we don't know anything about this
+; function.
define void @outerNoAttribute() {
call void @innerLarge()
ret void
@@ -23,7 +30,15 @@ define void @outerConflictingAttributeLarge() "min-legal-vector-width"="512" {
ret void
}
-; CHECK: define void @outerNoAttribute() #0
+; We should remove the attribute after inlining since the callee's
+; vector width requirements are unknown.
+define void @outerAttribute() "min-legal-vector-width"="128" {
+ call void @innerNoAttribute()
+ ret void
+}
+
+; CHECK: define void @outerNoAttribute() {
; CHECK: define void @outerConflictingAttributeSmall() #0
; CHECK: define void @outerConflictingAttributeLarge() #0
+; CHECK: define void @outerAttribute() {
; CHECK: attributes #0 = { "min-legal-vector-width"="512" }
OpenPOWER on IntegriCloud