Continuing on from D105780, this should be the last major bit of attribute cleanup. Currently, LLParser implements attribute parsing for functions, parameters and returns separately, enumerating all supported (and unsupported) attributes each time. This patch extracts the common parsing logic, and performs a check afterwards whether the attribute is valid in the given position. Parameters and returns are handled together, while function attributes need slightly different logic to support attribute groups. Differential Revision: https://reviews.llvm.org/D105938
41 lines
1.6 KiB
LLVM
41 lines
1.6 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt %s -passes=loop-deletion -S | FileCheck %s --check-prefixes=CHECK
|
|
|
|
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
%class.Loc.95 = type { %class.Domain.96 }
|
|
%class.Domain.96 = type { %class.DomainBase.97 }
|
|
%class.DomainBase.97 = type { [3 x %struct.WrapNoInit] }
|
|
%struct.WrapNoInit = type { %class.Loc }
|
|
%class.Loc = type { %class.Domain.67 }
|
|
%class.Domain.67 = type { %class.DomainBase.68 }
|
|
%class.DomainBase.68 = type { i32 }
|
|
|
|
define dso_local void @_ZSt8_DestroyIP3LocILi3EES1_EvT_S3_RSaIT0_E(%class.Loc.95* %0) #0 {
|
|
; CHECK-LABEL: @_ZSt8_DestroyIP3LocILi3EES1_EvT_S3_RSaIT0_E(
|
|
; CHECK-NEXT: br label [[_ZST8_DESTROYIP3LOCILI3EEEVT_S3__EXIT:%.*]]
|
|
; CHECK: _ZSt8_DestroyIP3LocILi3EEEvT_S3_.exit:
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
br label %2
|
|
|
|
2: ; preds = %4, %1
|
|
%.0.i.i = phi %class.Loc.95* [ undef, %1 ], [ %5, %4 ]
|
|
%3 = icmp ne %class.Loc.95* %.0.i.i, %0
|
|
br i1 %3, label %4, label %_ZSt8_DestroyIP3LocILi3EEEvT_S3_.exit
|
|
|
|
4: ; preds = %2
|
|
call void @llvm.assume(i1 true) [ "align"(%class.Loc.95* %.0.i.i, i64 4) ]
|
|
%5 = getelementptr inbounds %class.Loc.95, %class.Loc.95* %.0.i.i, i32 1
|
|
br label %2
|
|
|
|
_ZSt8_DestroyIP3LocILi3EEEvT_S3_.exit: ; preds = %2
|
|
ret void
|
|
}
|
|
|
|
declare void @llvm.assume(i1) #1
|
|
|
|
attributes #0 = { "target-cpu"="x86-64" }
|
|
attributes #1 = { willreturn readnone norecurse nofree }
|