2021-03-12 06:21:32 +01:00
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals
2021-07-16 01:24:58 +02:00
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=34 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=34 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
2020-04-21 04:11:02 +02:00
; TODO: The old pass manager cgscc run is disabled as it causes a crash on windows which is under investigation: http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/23151
2020-07-29 02:57:21 +02:00
; opt -attributor-cgscc -enable-new-pm=0 -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_NPM,IS__CGSCC____,IS________OPM,IS__CGSCC_OPM
2020-04-18 04:09:16 +02:00
; RUN: opt -aa-pipeline=basic-aa -passes=attributor-cgscc -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_OPM,IS__CGSCC____,IS________NPM,IS__CGSCC_NPM
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
2021-02-22 21:38:23 +01:00
; NOT_CGSCC___: @dead_with_blockaddress_users.l = constant [2 x i8*] [i8* inttoptr (i32 1 to i8*), i8* inttoptr (i32 1 to i8*)]
; IS__CGSCC___: @dead_with_blockaddress_users.l = constant [2 x i8*] [i8* blockaddress(@dead_with_blockaddress_users, %lab0), i8* blockaddress(@dead_with_blockaddress_users, %end)]
2019-11-02 04:35:18 +01:00
@dead_with_blockaddress_users.l = constant [ 2 x i8 * ] [ i8 * blockaddress ( @dead_with_blockaddress_users , %lab0 ) , i8 * blockaddress ( @dead_with_blockaddress_users , %end ) ]
2020-01-12 07:34:38 +01:00
declare void @no_return_call ( ) n o free noreturn nounwind n o s y n c
2019-07-23 01:58:23 +02:00
2019-08-02 23:31:22 +02:00
declare void @normal_call ( ) readnone
2019-07-23 01:58:23 +02:00
declare i32 @foo ( )
2019-11-02 03:59:32 +01:00
declare i32 @foo_nounwind ( ) nounwind
2019-08-04 20:38:53 +02:00
declare i32 @foo_noreturn_nounwind ( ) noreturn nounwind
2019-07-23 01:58:23 +02:00
declare i32 @foo_noreturn ( ) noreturn
2019-08-02 23:31:22 +02:00
declare i32 @bar ( ) n o s y n c readnone
2019-07-23 01:58:23 +02:00
2019-08-21 01:16:57 +02:00
; This internal function has no live call sites, so all its BBs are considered dead,
; and nothing should be deduced for it.
2021-03-12 06:21:32 +01:00
;.
; NOT_CGSCC_NPM: @[[DEAD_WITH_BLOCKADDRESS_USERS_L:[a-zA-Z0-9_$"\\.-]+]] = constant [2 x i8*] [i8* inttoptr (i32 1 to i8*), i8* inttoptr (i32 1 to i8*)]
; NOT_CGSCC_NPM: @[[A1:[a-zA-Z0-9_$"\\.-]+]] = common global i8 0, align 8
; NOT_CGSCC_NPM: @[[A2:[a-zA-Z0-9_$"\\.-]+]] = common global i8 0, align 16
; NOT_CGSCC_NPM: @[[E:[a-zA-Z0-9_$"\\.-]+]] = global %struct.a* null
; NOT_CGSCC_NPM: @[[P:[a-zA-Z0-9_$"\\.-]+]] = global i8 0
;.
; IS__CGSCC____: @[[DEAD_WITH_BLOCKADDRESS_USERS_L:[a-zA-Z0-9_$"\\.-]+]] = constant [2 x i8*] [i8* blockaddress(@dead_with_blockaddress_users, [[LAB0:%.*]]), i8* blockaddress(@dead_with_blockaddress_users, [[END:%.*]])]
; IS__CGSCC____: @[[A1:[a-zA-Z0-9_$"\\.-]+]] = common global i8 0, align 8
; IS__CGSCC____: @[[A2:[a-zA-Z0-9_$"\\.-]+]] = common global i8 0, align 16
; IS__CGSCC____: @[[E:[a-zA-Z0-9_$"\\.-]+]] = global %struct.a* null
; IS__CGSCC____: @[[P:[a-zA-Z0-9_$"\\.-]+]] = global i8 0
;.
2019-08-21 01:16:57 +02:00
define internal i32 @dead_internal_func ( i32 %0 ) {
2020-07-19 21:55:43 +02:00
; IS__CGSCC____: Function Attrs: nofree norecurse nosync nounwind readnone willreturn
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@dead_internal_func
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR6:[0-9]+]] {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC____-NEXT: br label [[TMP2:%.*]]
; IS__CGSCC____: 1:
; IS__CGSCC____-NEXT: ret i32 undef
; IS__CGSCC____: 2:
; IS__CGSCC____-NEXT: [[TMP3:%.*]] = phi i32 [ [[TMP6:%.*]], [[TMP2]] ], [ 1, [[TMP0:%.*]] ]
; IS__CGSCC____-NEXT: [[TMP4:%.*]] = phi i32 [ [[TMP5:%.*]], [[TMP2]] ], [ 1, [[TMP0]] ]
; IS__CGSCC____-NEXT: [[TMP5]] = mul nsw i32 [[TMP3]], [[TMP4]]
; IS__CGSCC____-NEXT: [[TMP6]] = add nuw nsw i32 [[TMP3]], 1
; IS__CGSCC____-NEXT: [[TMP7:%.*]] = icmp eq i32 [[TMP3]], 10
; IS__CGSCC____-NEXT: br i1 [[TMP7]], label [[TMP1:%.*]], label [[TMP2]]
;
2019-08-21 01:16:57 +02:00
%2 = icmp slt i32 %0 , 1
br i1 %2 , label %3 , label %5
; <label>:3: ; preds = %5, %1
%4 = phi i32 [ 1 , %1 ] , [ %8 , %5 ]
ret i32 %4
; <label>:5: ; preds = %1, %5
%6 = phi i32 [ %9 , %5 ] , [ 1 , %1 ]
%7 = phi i32 [ %8 , %5 ] , [ 1 , %1 ]
%8 = mul nsw i32 %6 , %7
%9 = add nuw nsw i32 %6 , 1
%10 = icmp eq i32 %6 , %0
br i1 %10 , label %3 , label %5
}
2019-08-02 23:31:22 +02:00
define i32 @volatile_load ( i32 * ) norecurse nounwind uwtable {
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM: Function Attrs: argmemonly nofree norecurse nounwind uwtable willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@volatile_load
; NOT_CGSCC_NPM-SAME: (i32* nofree align 4 [[TMP0:%.*]]) #[[ATTR6:[0-9]+]] {
; NOT_CGSCC_NPM-NEXT: [[TMP2:%.*]] = load volatile i32, i32* [[TMP0]], align 4
; NOT_CGSCC_NPM-NEXT: ret i32 [[TMP2]]
;
; IS__CGSCC____: Function Attrs: argmemonly nofree norecurse nounwind uwtable willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@volatile_load
; IS__CGSCC____-SAME: (i32* nofree align 4 [[TMP0:%.*]]) #[[ATTR7:[0-9]+]] {
; IS__CGSCC____-NEXT: [[TMP2:%.*]] = load volatile i32, i32* [[TMP0]], align 4
; IS__CGSCC____-NEXT: ret i32 [[TMP2]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2019-08-02 23:31:22 +02:00
%2 = load volatile i32 , i32 * %0 , align 4
ret i32 %2
}
define internal i32 @internal_load ( i32 * ) norecurse nounwind uwtable {
2020-07-19 21:55:43 +02:00
; IS__CGSCC____: Function Attrs: nofree norecurse nosync nounwind readnone uwtable willreturn
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@internal_load
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR8:[0-9]+]] {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC____-NEXT: ret i32 undef
;
2019-08-02 23:31:22 +02:00
%2 = load i32 , i32 * %0 , align 4
ret i32 %2
}
; TEST 1: Only first block is live.
define i32 @first_block_no_return ( i32 %a , i32 * nonnull %ptr1 , i32 * %ptr2 ) #0 {
2020-07-19 21:55:43 +02:00
; CHECK: Function Attrs: nofree noreturn nosync nounwind
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-LABEL: define {{[^@]+}}@first_block_no_return
2021-02-22 21:38:23 +01:00
; CHECK-SAME: (i32 [[A:%.*]], i32* nocapture nofree nonnull readnone [[PTR1:%.*]], i32* nocapture nofree readnone [[PTR2:%.*]]) #[[ATTR0:[0-9]+]] {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: entry:
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: call void @no_return_call() #[[ATTR3:[0-9]+]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: unreachable
; CHECK: cond.true:
; CHECK-NEXT: unreachable
; CHECK: cond.false:
; CHECK-NEXT: unreachable
; CHECK: cond.end:
; CHECK-NEXT: unreachable
;
2019-08-02 23:31:22 +02:00
entry:
call i32 @internal_load ( i32 * %ptr1 )
call void @no_return_call ( )
2019-08-21 01:16:57 +02:00
call i32 @dead_internal_func ( i32 10 )
2019-08-02 23:31:22 +02:00
%cmp = icmp eq i32 %a , 0
br i1 %cmp , label %cond.true , label %cond.false
cond.true: ; preds = %entry
call i32 @internal_load ( i32 * %ptr2 )
%load = call i32 @volatile_load ( i32 * %ptr1 )
call void @normal_call ( )
%call = call i32 @foo ( )
br label %cond.end
cond.false: ; preds = %entry
call void @normal_call ( )
%call1 = call i32 @bar ( )
br label %cond.end
cond.end: ; preds = %cond.false, %cond.true
%cond = phi i32 [ %call , %cond.true ] , [ %call1 , %cond.false ]
ret i32 %cond
}
; TEST 2: cond.true is dead, but cond.end is not, since cond.false is live
2019-07-23 01:58:23 +02:00
; This is just an example. For example we can put a sync call in a
; dead block and check if it is deduced.
2019-08-02 23:31:22 +02:00
define i32 @dead_block_present ( i32 %a , i32 * %ptr1 ) #0 {
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM: Function Attrs: nosync
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@dead_block_present
; NOT_CGSCC_NPM-SAME: (i32 [[A:%.*]], i32* nocapture nofree readnone [[PTR1:%.*]]) #[[ATTR7:[0-9]+]] {
; NOT_CGSCC_NPM-NEXT: entry:
; NOT_CGSCC_NPM-NEXT: [[CMP:%.*]] = icmp eq i32 [[A]], 0
; NOT_CGSCC_NPM-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
; NOT_CGSCC_NPM: cond.true:
; NOT_CGSCC_NPM-NEXT: call void @no_return_call() #[[ATTR3]]
; NOT_CGSCC_NPM-NEXT: unreachable
; NOT_CGSCC_NPM: cond.false:
; NOT_CGSCC_NPM-NEXT: call void @normal_call()
; NOT_CGSCC_NPM-NEXT: [[CALL1:%.*]] = call i32 @bar()
; NOT_CGSCC_NPM-NEXT: br label [[COND_END:%.*]]
; NOT_CGSCC_NPM: cond.end:
; NOT_CGSCC_NPM-NEXT: ret i32 [[CALL1]]
;
; IS__CGSCC____: Function Attrs: nosync
; IS__CGSCC____-LABEL: define {{[^@]+}}@dead_block_present
; IS__CGSCC____-SAME: (i32 [[A:%.*]], i32* nocapture nofree readnone [[PTR1:%.*]]) #[[ATTR9:[0-9]+]] {
; IS__CGSCC____-NEXT: entry:
; IS__CGSCC____-NEXT: [[CMP:%.*]] = icmp eq i32 [[A]], 0
; IS__CGSCC____-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
; IS__CGSCC____: cond.true:
; IS__CGSCC____-NEXT: call void @no_return_call() #[[ATTR3]]
; IS__CGSCC____-NEXT: unreachable
; IS__CGSCC____: cond.false:
; IS__CGSCC____-NEXT: call void @normal_call()
; IS__CGSCC____-NEXT: [[CALL1:%.*]] = call i32 @bar()
; IS__CGSCC____-NEXT: br label [[COND_END:%.*]]
; IS__CGSCC____: cond.end:
; IS__CGSCC____-NEXT: ret i32 [[CALL1]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2019-07-23 01:58:23 +02:00
entry:
%cmp = icmp eq i32 %a , 0
br i1 %cmp , label %cond.true , label %cond.false
cond.true: ; preds = %entry
call void @no_return_call ( )
2019-08-02 23:31:22 +02:00
%call = call i32 @volatile_load ( i32 * %ptr1 )
2019-07-23 01:58:23 +02:00
br label %cond.end
cond.false: ; preds = %entry
call void @normal_call ( )
%call1 = call i32 @bar ( )
br label %cond.end
cond.end: ; preds = %cond.false, %cond.true
%cond = phi i32 [ %call , %cond.true ] , [ %call1 , %cond.false ]
ret i32 %cond
}
2019-08-02 23:31:22 +02:00
; TEST 3: both cond.true and cond.false are dead, therfore cond.end is dead as well.
2019-07-23 01:58:23 +02:00
define i32 @all_dead ( i32 %a ) #0 {
2020-07-19 21:55:43 +02:00
; CHECK: Function Attrs: nofree noreturn nosync nounwind
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-LABEL: define {{[^@]+}}@all_dead
2021-02-22 21:38:23 +01:00
; CHECK-SAME: (i32 [[A:%.*]]) #[[ATTR0]] {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: entry:
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[A]], 0
; CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
; CHECK: cond.true:
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: call void @no_return_call() #[[ATTR3]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: unreachable
; CHECK: cond.false:
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: call void @no_return_call() #[[ATTR3]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: unreachable
; CHECK: cond.end:
; CHECK-NEXT: unreachable
;
2019-07-23 01:58:23 +02:00
entry:
%cmp = icmp eq i32 %a , 0
br i1 %cmp , label %cond.true , label %cond.false
cond.true: ; preds = %entry
call void @no_return_call ( )
2019-08-21 01:16:57 +02:00
call i32 @dead_internal_func ( i32 10 )
2019-07-23 01:58:23 +02:00
%call = call i32 @foo ( )
br label %cond.end
cond.false: ; preds = %entry
call void @no_return_call ( )
2019-08-21 01:16:57 +02:00
call i32 @dead_internal_func ( i32 10 )
2019-07-23 01:58:23 +02:00
%call1 = call i32 @bar ( )
br label %cond.end
cond.end: ; preds = %cond.false, %cond.true
%cond = phi i32 [ %call , %cond.true ] , [ %call1 , %cond.false ]
ret i32 %cond
}
declare i32 @__gxx_personality_v0 ( . . . )
2019-08-02 23:31:22 +02:00
; TEST 4: All blocks are live.
2019-07-23 01:58:23 +02:00
define i32 @all_live ( i32 %a ) #0 {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-LABEL: define {{[^@]+}}@all_live
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32 [[A:%.*]]) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: entry:
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[A]], 0
; CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
; CHECK: cond.true:
; CHECK-NEXT: call void @normal_call()
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: [[CALL:%.*]] = call i32 @foo_noreturn() #[[ATTR4:[0-9]+]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: unreachable
; CHECK: cond.false:
; CHECK-NEXT: call void @normal_call()
; CHECK-NEXT: [[CALL1:%.*]] = call i32 @bar()
; CHECK-NEXT: br label [[COND_END:%.*]]
; CHECK: cond.end:
; CHECK-NEXT: ret i32 [[CALL1]]
;
2019-07-23 01:58:23 +02:00
entry:
%cmp = icmp eq i32 %a , 0
br i1 %cmp , label %cond.true , label %cond.false
cond.true: ; preds = %entry
call void @normal_call ( )
%call = call i32 @foo_noreturn ( )
br label %cond.end
cond.false: ; preds = %entry
call void @normal_call ( )
%call1 = call i32 @bar ( )
br label %cond.end
cond.end: ; preds = %cond.false, %cond.true
%cond = phi i32 [ %call , %cond.true ] , [ %call1 , %cond.false ]
ret i32 %cond
}
2019-11-02 03:59:32 +01:00
; TEST 5.1 noreturn invoke instruction with a unreachable normal successor block.
2019-07-23 01:58:23 +02:00
define i32 @invoke_noreturn ( i32 %a ) personality i8 * bitcast ( i32 ( . . . ) * @__gxx_personality_v0 to i8 * ) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-LABEL: define {{[^@]+}}@invoke_noreturn
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32 [[A:%.*]]) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: entry:
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[A]], 0
; CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
; CHECK: cond.true:
; CHECK-NEXT: call void @normal_call()
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: [[CALL:%.*]] = invoke i32 @foo_noreturn() #[[ATTR4]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: to label [[CONTINUE:%.*]] unwind label [[CLEANUP:%.*]]
; CHECK: cond.false:
; CHECK-NEXT: call void @normal_call()
; CHECK-NEXT: [[CALL1:%.*]] = call i32 @bar()
; CHECK-NEXT: br label [[COND_END:%.*]]
; CHECK: cond.end:
; CHECK-NEXT: ret i32 [[CALL1]]
; CHECK: continue:
; CHECK-NEXT: unreachable
; CHECK: cleanup:
; CHECK-NEXT: [[RES:%.*]] = landingpad { i8*, i32 }
; CHECK-NEXT: catch i8* null
; CHECK-NEXT: ret i32 0
;
2019-07-23 01:58:23 +02:00
entry:
%cmp = icmp eq i32 %a , 0
br i1 %cmp , label %cond.true , label %cond.false
cond.true: ; preds = %entry
call void @normal_call ( )
%call = invoke i32 @foo_noreturn ( ) to label %continue
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
unwind label %cleanup
2019-08-04 20:38:53 +02:00
cond.false: ; preds = %entry
call void @normal_call ( )
%call1 = call i32 @bar ( )
br label %cond.end
cond.end: ; preds = %cond.false, %continue
%cond = phi i32 [ %call , %continue ] , [ %call1 , %cond.false ]
ret i32 %cond
continue:
br label %cond.end
cleanup:
%res = landingpad { i8 * , i32 }
catch i8 * null
ret i32 0
}
2019-11-02 03:59:32 +01:00
; TEST 5.2 noreturn invoke instruction replaced by a call and an unreachable instruction
2019-08-04 20:38:53 +02:00
; put after it.
define i32 @invoke_noreturn_nounwind ( i32 %a ) personality i8 * bitcast ( i32 ( . . . ) * @__gxx_personality_v0 to i8 * ) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-LABEL: define {{[^@]+}}@invoke_noreturn_nounwind
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32 [[A:%.*]]) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: entry:
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[A]], 0
; CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
; CHECK: cond.true:
; CHECK-NEXT: call void @normal_call()
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: [[CALL:%.*]] = call i32 @foo_noreturn_nounwind() #[[ATTR3]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: unreachable
; CHECK: cond.false:
; CHECK-NEXT: call void @normal_call()
; CHECK-NEXT: [[CALL1:%.*]] = call i32 @bar()
; CHECK-NEXT: br label [[COND_END:%.*]]
; CHECK: cond.end:
; CHECK-NEXT: ret i32 [[CALL1]]
; CHECK: continue:
; CHECK-NEXT: unreachable
; CHECK: cleanup:
; CHECK-NEXT: unreachable
;
2019-08-04 20:38:53 +02:00
entry:
%cmp = icmp eq i32 %a , 0
br i1 %cmp , label %cond.true , label %cond.false
cond.true: ; preds = %entry
call void @normal_call ( )
%call = invoke i32 @foo_noreturn_nounwind ( ) to label %continue
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
unwind label %cleanup
2019-07-23 01:58:23 +02:00
2019-08-05 23:35:02 +02:00
2019-07-23 01:58:23 +02:00
cond.false: ; preds = %entry
call void @normal_call ( )
%call1 = call i32 @bar ( )
br label %cond.end
cond.end: ; preds = %cond.false, %continue
%cond = phi i32 [ %call , %continue ] , [ %call1 , %cond.false ]
ret i32 %cond
continue:
br label %cond.end
cleanup:
%res = landingpad { i8 * , i32 }
catch i8 * null
ret i32 0
}
2019-11-02 03:59:32 +01:00
; TEST 5.3 unounwind invoke instruction replaced by a call and a branch instruction put after it.
define i32 @invoke_nounwind ( i32 %a ) personality i8 * bitcast ( i32 ( . . . ) * @__gxx_personality_v0 to i8 * ) {
; CHECK-LABEL: define {{[^@]+}}@invoke_nounwind
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32 [[A:%.*]]) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: entry:
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[A]], 0
; CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
2019-11-02 03:59:32 +01:00
; CHECK: cond.true:
; CHECK-NEXT: call void @normal_call()
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: [[CALL:%.*]] = call i32 @foo_nounwind() #[[ATTR2:[0-9]+]]
2019-11-02 03:59:32 +01:00
; CHECK-NEXT: br label [[CONTINUE:%.*]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK: cond.false:
; CHECK-NEXT: call void @normal_call()
; CHECK-NEXT: [[CALL1:%.*]] = call i32 @bar()
2020-04-09 12:07:36 +02:00
; CHECK-NEXT: br label [[COND_END:%.*]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK: cond.end:
; CHECK-NEXT: [[COND:%.*]] = phi i32 [ [[CALL]], [[CONTINUE]] ], [ [[CALL1]], [[COND_FALSE]] ]
; CHECK-NEXT: ret i32 [[COND]]
; CHECK: continue:
; CHECK-NEXT: br label [[COND_END]]
; CHECK: cleanup:
; CHECK-NEXT: unreachable
2019-11-02 03:59:32 +01:00
;
entry:
%cmp = icmp eq i32 %a , 0
br i1 %cmp , label %cond.true , label %cond.false
cond.true: ; preds = %entry
call void @normal_call ( )
%call = invoke i32 @foo_nounwind ( ) to label %continue
unwind label %cleanup
cond.false: ; preds = %entry
call void @normal_call ( )
%call1 = call i32 @bar ( )
br label %cond.end
cond.end: ; preds = %cond.false, %continue
%cond = phi i32 [ %call , %continue ] , [ %call1 , %cond.false ]
ret i32 %cond
continue:
br label %cond.end
cleanup:
%res = landingpad { i8 * , i32 }
catch i8 * null
ret i32 0
}
2020-01-07 23:01:57 +01:00
; TEST 5.4 unounwind invoke instruction replaced by a call and a branch instruction put after it.
define i32 @invoke_nounwind_phi ( i32 %a ) personality i8 * bitcast ( i32 ( . . . ) * @__gxx_personality_v0 to i8 * ) {
; CHECK-LABEL: define {{[^@]+}}@invoke_nounwind_phi
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32 [[A:%.*]]) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
2020-01-07 23:01:57 +01:00
; CHECK-NEXT: entry:
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[A]], 0
; CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
; CHECK: cond.true:
; CHECK-NEXT: call void @normal_call()
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: [[CALL:%.*]] = call i32 @foo_nounwind() #[[ATTR2]]
2020-01-07 23:01:57 +01:00
; CHECK-NEXT: br label [[CONTINUE:%.*]]
; CHECK: cond.false:
; CHECK-NEXT: call void @normal_call()
; CHECK-NEXT: [[CALL1:%.*]] = call i32 @bar()
; CHECK-NEXT: br label [[CONTINUE]]
; CHECK: continue:
; CHECK-NEXT: [[P:%.*]] = phi i32 [ 0, [[COND_TRUE]] ], [ 1, [[COND_FALSE]] ]
; CHECK-NEXT: ret i32 [[P]]
; CHECK: cleanup:
; CHECK-NEXT: unreachable
;
entry:
%cmp = icmp eq i32 %a , 0
br i1 %cmp , label %cond.true , label %cond.false
cond.true: ; preds = %entry
call void @normal_call ( )
%call = invoke i32 @foo_nounwind ( ) to label %continue
unwind label %cleanup
cond.false: ; preds = %entry
call void @normal_call ( )
%call1 = call i32 @bar ( )
br label %continue
continue:
%p = phi i32 [ 0 , %cond.true ] , [ 1 , %cond.false ]
ret i32 %p
cleanup:
%res = landingpad { i8 * , i32 } catch i8 * null
ret i32 0
}
; TEST 5.5 unounwind invoke instruction replaced by a call and a branch instruction put after it.
define i32 @invoke_nounwind_phi_dom ( i32 %a ) personality i8 * bitcast ( i32 ( . . . ) * @__gxx_personality_v0 to i8 * ) {
; CHECK-LABEL: define {{[^@]+}}@invoke_nounwind_phi_dom
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32 [[A:%.*]]) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
2020-01-07 23:01:57 +01:00
; CHECK-NEXT: entry:
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[A]], 0
; CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
; CHECK: cond.true:
; CHECK-NEXT: call void @normal_call()
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: [[CALL:%.*]] = call i32 @foo_nounwind() #[[ATTR2]]
2020-01-07 23:01:57 +01:00
; CHECK-NEXT: br label [[CONTINUE:%.*]]
; CHECK: cond.false:
; CHECK-NEXT: call void @normal_call()
; CHECK-NEXT: [[CALL1:%.*]] = call i32 @bar()
; CHECK-NEXT: br label [[CONTINUE]]
; CHECK: continue:
; CHECK-NEXT: [[P:%.*]] = phi i32 [ [[CALL]], [[COND_TRUE]] ], [ [[CALL1]], [[COND_FALSE]] ]
; CHECK-NEXT: ret i32 [[P]]
; CHECK: cleanup:
; CHECK-NEXT: unreachable
;
entry:
%cmp = icmp eq i32 %a , 0
br i1 %cmp , label %cond.true , label %cond.false
cond.true: ; preds = %entry
call void @normal_call ( )
%call = invoke i32 @foo_nounwind ( ) to label %continue
unwind label %cleanup
cond.false: ; preds = %entry
call void @normal_call ( )
%call1 = call i32 @bar ( )
br label %continue
continue:
%p = phi i32 [ %call , %cond.true ] , [ %call1 , %cond.false ]
ret i32 %p
cleanup:
%res = landingpad { i8 * , i32 } catch i8 * null
ret i32 0
}
2019-08-02 23:31:22 +02:00
; TEST 6: Undefined behvior, taken from LangRef.
2019-07-23 01:58:23 +02:00
; FIXME: Should be able to detect undefined behavior.
2019-08-04 20:38:53 +02:00
define void @ub ( i32 * %0 ) {
2021-07-16 01:24:58 +02:00
; IS________OPM: Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly
; IS________OPM-LABEL: define {{[^@]+}}@ub
; IS________OPM-SAME: (i32* nocapture nofree writeonly [[TMP0:%.*]]) #[[ATTR8:[0-9]+]] {
; IS________OPM-NEXT: store i32 0, i32* [[TMP0]], align 4
; IS________OPM-NEXT: ret void
;
; IS__TUNIT_NPM: Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly
; IS__TUNIT_NPM-LABEL: define {{[^@]+}}@ub
; IS__TUNIT_NPM-SAME: (i32* nocapture nofree readnone [[TMP0:%.*]]) #[[ATTR8:[0-9]+]] {
; IS__TUNIT_NPM-NEXT: store i32 0, i32* undef, align 536870912
; IS__TUNIT_NPM-NEXT: ret void
2020-07-19 21:55:43 +02:00
;
; IS__CGSCC____: Function Attrs: argmemonly nofree norecurse nosync nounwind willreturn writeonly
; IS__CGSCC____-LABEL: define {{[^@]+}}@ub
2021-07-16 01:24:58 +02:00
; IS__CGSCC____-SAME: (i32* nocapture nofree readnone [[TMP0:%.*]]) #[[ATTR10:[0-9]+]] {
; IS__CGSCC____-NEXT: store i32 0, i32* undef, align 536870912
2020-07-19 21:55:43 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2019-07-23 01:58:23 +02:00
%poison = sub nuw i32 0 , 1 ; Results in a poison value.
%still_poison = and i32 %poison , 0 ; 0, but also poison.
%poison_yet_again = getelementptr i32 , i32 * %0 , i32 %still_poison
store i32 0 , i32 * %poison_yet_again ; Undefined behavior due to store to poison.
ret void
}
define void @inf_loop ( ) #0 {
2020-07-19 21:55:43 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree noreturn nosync nounwind readnone
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@inf_loop
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR9:[0-9]+]] {
2020-07-19 21:55:43 +02:00
; NOT_CGSCC_NPM-NEXT: entry:
; NOT_CGSCC_NPM-NEXT: br label [[WHILE_BODY:%.*]]
; NOT_CGSCC_NPM: while.body:
; NOT_CGSCC_NPM-NEXT: br label [[WHILE_BODY]]
;
; IS__CGSCC____: Function Attrs: nofree norecurse noreturn nosync nounwind readnone
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@inf_loop
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR11:[0-9]+]] {
2020-07-19 21:55:43 +02:00
; IS__CGSCC____-NEXT: entry:
; IS__CGSCC____-NEXT: br label [[WHILE_BODY:%.*]]
; IS__CGSCC____: while.body:
; IS__CGSCC____-NEXT: br label [[WHILE_BODY]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2019-07-23 01:58:23 +02:00
entry:
br label %while.body
while.body: ; preds = %entry, %while.body
br label %while.body
}
2019-08-02 23:31:22 +02:00
; TEST 7: Infinite loop.
2019-07-23 01:58:23 +02:00
; FIXME: Detect infloops, and mark affected blocks dead.
define i32 @test5 ( i32 , i32 ) #0 {
2020-07-19 21:55:43 +02:00
; CHECK: Function Attrs: nosync readnone
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-LABEL: define {{[^@]+}}@test5
2021-02-22 21:38:23 +01:00
; CHECK-SAME: (i32 [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR5:[0-9]+]] {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i32 [[TMP0]], [[TMP1]]
; CHECK-NEXT: br i1 [[TMP3]], label [[COND_IF:%.*]], label [[COND_ELSEIF:%.*]]
; CHECK: cond.if:
; CHECK-NEXT: [[TMP4:%.*]] = tail call i32 @bar()
; CHECK-NEXT: br label [[COND_END:%.*]]
; CHECK: cond.elseif:
; CHECK-NEXT: unreachable
; CHECK: cond.else:
; CHECK-NEXT: unreachable
; CHECK: cond.end:
; CHECK-NEXT: ret i32 0
;
2019-07-23 01:58:23 +02:00
%3 = icmp sgt i32 %0 , %1
br i1 %3 , label %cond.if , label %cond.elseif
cond.if: ; preds = %2
%4 = tail call i32 @bar ( )
br label %cond.end
cond.elseif: ; preds = %2
call void @inf_loop ( )
%5 = icmp slt i32 %0 , %1
br i1 %5 , label %cond.end , label %cond.else
cond.else: ; preds = %cond.elseif
%6 = tail call i32 @foo ( )
br label %cond.end
cond.end: ; preds = %cond.if, %cond.else, %cond.elseif
%7 = phi i32 [ %1 , %cond.elseif ] , [ 0 , %cond.else ] , [ 0 , %cond.if ]
ret i32 %7
}
define void @rec ( ) #0 {
2020-07-19 21:55:43 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree noreturn nosync nounwind readnone willreturn
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@rec
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR10:[0-9]+]] {
2020-07-19 21:55:43 +02:00
; NOT_CGSCC_NPM-NEXT: entry:
; NOT_CGSCC_NPM-NEXT: unreachable
;
; IS__CGSCC____: Function Attrs: nofree norecurse noreturn nosync nounwind readnone willreturn
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@rec
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR12:[0-9]+]] {
2020-07-19 21:55:43 +02:00
; IS__CGSCC____-NEXT: entry:
; IS__CGSCC____-NEXT: unreachable
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2019-07-23 01:58:23 +02:00
entry:
call void @rec ( )
ret void
}
2019-08-02 23:31:22 +02:00
; TEST 8: Recursion
2019-07-23 01:58:23 +02:00
; FIXME: everything after first block should be marked dead
; and unreachable should be put after call to @rec().
define i32 @test6 ( i32 , i32 ) #0 {
2020-07-19 21:55:43 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree noreturn nosync nounwind readnone willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@test6
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: (i32 [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR10]] {
2020-07-19 21:55:43 +02:00
; NOT_CGSCC_NPM-NEXT: unreachable
; NOT_CGSCC_NPM: cond.if:
; NOT_CGSCC_NPM-NEXT: unreachable
; NOT_CGSCC_NPM: cond.elseif:
; NOT_CGSCC_NPM-NEXT: unreachable
; NOT_CGSCC_NPM: cond.else:
; NOT_CGSCC_NPM-NEXT: unreachable
; NOT_CGSCC_NPM: cond.end:
; NOT_CGSCC_NPM-NEXT: unreachable
;
; IS__CGSCC____: Function Attrs: nofree norecurse noreturn nosync nounwind readnone willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@test6
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: (i32 [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR12]] {
2020-07-19 21:55:43 +02:00
; IS__CGSCC____-NEXT: unreachable
; IS__CGSCC____: cond.if:
; IS__CGSCC____-NEXT: unreachable
; IS__CGSCC____: cond.elseif:
; IS__CGSCC____-NEXT: unreachable
; IS__CGSCC____: cond.else:
; IS__CGSCC____-NEXT: unreachable
; IS__CGSCC____: cond.end:
; IS__CGSCC____-NEXT: unreachable
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2019-07-23 01:58:23 +02:00
call void @rec ( )
%3 = icmp sgt i32 %0 , %1
br i1 %3 , label %cond.if , label %cond.elseif
cond.if: ; preds = %2
%4 = tail call i32 @bar ( )
br label %cond.end
cond.elseif: ; preds = %2
call void @rec ( )
%5 = icmp slt i32 %0 , %1
br i1 %5 , label %cond.end , label %cond.else
cond.else: ; preds = %cond.elseif
%6 = tail call i32 @foo ( )
br label %cond.end
cond.end: ; preds = %cond.if, %cond.else, %cond.elseif
%7 = phi i32 [ %1 , %cond.elseif ] , [ 0 , %cond.else ] , [ 0 , %cond.if ]
ret i32 %7
}
2019-08-02 23:31:22 +02:00
; TEST 9: Recursion
2019-07-23 01:58:23 +02:00
; FIXME: contains recursive call to itself in cond.elseif block
define i32 @test7 ( i32 , i32 ) #0 {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-LABEL: define {{[^@]+}}@test7
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32 [[TMP0:%.*]], i32 [[TMP1:%.*]]) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i32 [[TMP0]], [[TMP1]]
; CHECK-NEXT: br i1 [[TMP3]], label [[COND_IF:%.*]], label [[COND_ELSEIF:%.*]]
; CHECK: cond.if:
; CHECK-NEXT: [[TMP4:%.*]] = tail call i32 @bar()
; CHECK-NEXT: br label [[COND_END:%.*]]
; CHECK: cond.elseif:
; CHECK-NEXT: [[TMP5:%.*]] = tail call i32 @test7(i32 [[TMP0]], i32 [[TMP1]])
; CHECK-NEXT: [[TMP6:%.*]] = icmp slt i32 [[TMP0]], [[TMP1]]
; CHECK-NEXT: br i1 [[TMP6]], label [[COND_END]], label [[COND_ELSE:%.*]]
; CHECK: cond.else:
; CHECK-NEXT: [[TMP7:%.*]] = tail call i32 @foo()
; CHECK-NEXT: br label [[COND_END]]
; CHECK: cond.end:
; CHECK-NEXT: [[TMP8:%.*]] = phi i32 [ [[TMP1]], [[COND_ELSEIF]] ], [ 0, [[COND_ELSE]] ], [ 0, [[COND_IF]] ]
; CHECK-NEXT: ret i32 [[TMP8]]
;
2019-07-23 01:58:23 +02:00
%3 = icmp sgt i32 %0 , %1
br i1 %3 , label %cond.if , label %cond.elseif
cond.if: ; preds = %2
%4 = tail call i32 @bar ( )
br label %cond.end
cond.elseif: ; preds = %2
%5 = tail call i32 @test7 ( i32 %0 , i32 %1 )
%6 = icmp slt i32 %0 , %1
br i1 %6 , label %cond.end , label %cond.else
cond.else: ; preds = %cond.elseif
%7 = tail call i32 @foo ( )
br label %cond.end
cond.end: ; preds = %cond.if, %cond.else, %cond.elseif
%8 = phi i32 [ %1 , %cond.elseif ] , [ 0 , %cond.else ] , [ 0 , %cond.if ]
ret i32 %8
}
2019-08-21 01:16:57 +02:00
; SCC test
;
; char a1 __attribute__((aligned(8)));
; char a2 __attribute__((aligned(16)));
;
; char* f1(char* a ){
; return a?a:f2(&a1);
; }
; char* f2(char* a){
; return a?f1(a):f3(&a2);
; }
;
; char* f3(char* a){
; return a?&a1: f1(&a2);
; }
@a1 = common global i8 0 , align 8
@a2 = common global i8 0 , align 16
define internal i8 * @f1 ( i8 * readnone %0 ) local_unnamed_addr #0 {
2020-09-10 07:03:32 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@f1
; IS__CGSCC____-SAME: (i8* readnone [[TMP0:%.*]]) local_unnamed_addr {
; IS__CGSCC____-NEXT: [[TMP2:%.*]] = icmp eq i8* [[TMP0]], null
; IS__CGSCC____-NEXT: br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP5:%.*]]
; IS__CGSCC____: 3:
; IS__CGSCC____-NEXT: [[TMP4:%.*]] = tail call i8* @f2(i8* nonnull @a1)
; IS__CGSCC____-NEXT: br label [[TMP5]]
; IS__CGSCC____: 5:
; IS__CGSCC____-NEXT: [[TMP6:%.*]] = phi i8* [ [[TMP4]], [[TMP3]] ], [ [[TMP0]], [[TMP1:%.*]] ]
; IS__CGSCC____-NEXT: ret i8* [[TMP6]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2019-08-21 01:16:57 +02:00
%2 = icmp eq i8 * %0 , null
br i1 %2 , label %3 , label %5
; <label>:3: ; preds = %1
%4 = tail call i8 * @f2 ( i8 * nonnull @a1 )
br label %5
; <label>:5: ; preds = %1, %3
%6 = phi i8 * [ %4 , %3 ] , [ %0 , %1 ]
ret i8 * %6
}
define internal i8 * @f2 ( i8 * readnone %0 ) local_unnamed_addr #0 {
2020-09-10 07:03:32 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@f2
; IS__CGSCC____-SAME: (i8* readnone [[TMP0:%.*]]) local_unnamed_addr {
; IS__CGSCC____-NEXT: [[TMP2:%.*]] = icmp eq i8* [[TMP0]], null
; IS__CGSCC____-NEXT: br i1 [[TMP2]], label [[TMP5:%.*]], label [[TMP3:%.*]]
; IS__CGSCC____: 3:
; IS__CGSCC____-NEXT: [[TMP4:%.*]] = tail call i8* @f1(i8* nonnull [[TMP0]])
; IS__CGSCC____-NEXT: br label [[TMP7:%.*]]
; IS__CGSCC____: 5:
; IS__CGSCC____-NEXT: [[TMP6:%.*]] = tail call i8* @f3(i8* nonnull @a2)
; IS__CGSCC____-NEXT: br label [[TMP7]]
; IS__CGSCC____: 7:
; IS__CGSCC____-NEXT: [[TMP8:%.*]] = phi i8* [ [[TMP4]], [[TMP3]] ], [ [[TMP6]], [[TMP5]] ]
; IS__CGSCC____-NEXT: ret i8* [[TMP8]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2019-08-21 01:16:57 +02:00
%2 = icmp eq i8 * %0 , null
br i1 %2 , label %5 , label %3
; <label>:3: ; preds = %1
%4 = tail call i8 * @f1 ( i8 * nonnull %0 )
br label %7
; <label>:5: ; preds = %1
%6 = tail call i8 * @f3 ( i8 * nonnull @a2 )
br label %7
; <label>:7: ; preds = %5, %3
%8 = phi i8 * [ %4 , %3 ] , [ %6 , %5 ]
ret i8 * %8
}
define internal i8 * @f3 ( i8 * readnone %0 ) local_unnamed_addr #0 {
2020-09-10 07:03:32 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@f3
; IS__CGSCC____-SAME: (i8* readnone [[TMP0:%.*]]) local_unnamed_addr {
; IS__CGSCC____-NEXT: [[TMP2:%.*]] = icmp eq i8* [[TMP0]], null
; IS__CGSCC____-NEXT: br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP5:%.*]]
; IS__CGSCC____: 3:
; IS__CGSCC____-NEXT: [[TMP4:%.*]] = tail call i8* @f1(i8* nonnull @a2)
; IS__CGSCC____-NEXT: br label [[TMP5]]
; IS__CGSCC____: 5:
; IS__CGSCC____-NEXT: [[TMP6:%.*]] = phi i8* [ [[TMP4]], [[TMP3]] ], [ @a1, [[TMP1:%.*]] ]
; IS__CGSCC____-NEXT: ret i8* [[TMP6]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2019-08-21 01:16:57 +02:00
%2 = icmp eq i8 * %0 , null
br i1 %2 , label %3 , label %5
; <label>:3: ; preds = %1
%4 = tail call i8 * @f1 ( i8 * nonnull @a2 )
br label %5
; <label>:5: ; preds = %1, %3
%6 = phi i8 * [ %4 , %3 ] , [ @a1 , %1 ]
ret i8 * %6
}
2019-08-21 22:56:41 +02:00
2020-01-12 07:17:08 +01:00
declare void @sink ( ) n o free n o s y n c nounwind w i l l r e t u r n
2019-08-21 22:56:41 +02:00
define void @test_unreachable ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree noreturn nosync nounwind
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@test_unreachable
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR0]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14:[0-9]+]]
; NOT_CGSCC_NPM-NEXT: call void @test_unreachable() #[[ATTR0]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: unreachable
;
; IS__CGSCC____: Function Attrs: nofree noreturn nosync nounwind
; IS__CGSCC____-LABEL: define {{[^@]+}}@test_unreachable
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR0]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17:[0-9]+]]
; IS__CGSCC____-NEXT: call void @test_unreachable() #[[ATTR0]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: unreachable
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
2019-08-21 22:56:41 +02:00
call void @test_unreachable ( )
unreachable
}
2019-09-04 18:35:20 +02:00
define linkonce_odr void @non_exact1 ( ) {
2020-08-29 19:31:13 +02:00
; CHECK-LABEL: define {{[^@]+}}@non_exact1() {
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: call void @non_dead_a0() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a1() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a2() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a3() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a4() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a5() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a6() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a7() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a8() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a9() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a10() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a11() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a12() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a13() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a14() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_a15() #[[ATTR2]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: call void @middle()
; CHECK-NEXT: ret void
;
2019-09-04 18:35:20 +02:00
call void @non_dead_a0 ( )
call void @non_dead_a1 ( )
call void @non_dead_a2 ( )
call void @non_dead_a3 ( )
call void @non_dead_a4 ( )
call void @non_dead_a5 ( )
call void @non_dead_a6 ( )
call void @non_dead_a7 ( )
call void @non_dead_a8 ( )
call void @non_dead_a9 ( )
call void @non_dead_a10 ( )
call void @non_dead_a11 ( )
call void @non_dead_a12 ( )
call void @non_dead_a13 ( )
call void @non_dead_a14 ( )
call void @non_dead_a15 ( )
call void @middle ( )
ret void
}
define internal void @middle ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@middle() {
; NOT_CGSCC_NPM-NEXT: bb0:
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b0() #[[ATTR11:[0-9]+]]
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b1() #[[ATTR11]]
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b2() #[[ATTR11]]
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b3() #[[ATTR11]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: br label [[BB1:%.*]]
; NOT_CGSCC_NPM: bb1:
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b4() #[[ATTR11]]
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b5() #[[ATTR11]]
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b6() #[[ATTR11]]
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b7() #[[ATTR11]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: br label [[BB2:%.*]]
; NOT_CGSCC_NPM: bb2:
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b8() #[[ATTR11]]
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b9() #[[ATTR11]]
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b10() #[[ATTR11]]
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b11() #[[ATTR11]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: br label [[BB3:%.*]]
; NOT_CGSCC_NPM: bb3:
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b12() #[[ATTR11]]
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b13() #[[ATTR11]]
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b14() #[[ATTR11]]
; NOT_CGSCC_NPM-NEXT: call void @non_dead_b15() #[[ATTR11]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: br label [[BB4:%.*]]
; NOT_CGSCC_NPM: bb4:
; NOT_CGSCC_NPM-NEXT: call void @non_exact2()
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____-LABEL: define {{[^@]+}}@middle() {
; IS__CGSCC____-NEXT: bb0:
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-NEXT: call void @non_dead_b0() #[[ATTR17]]
; IS__CGSCC____-NEXT: call void @non_dead_b1() #[[ATTR17]]
; IS__CGSCC____-NEXT: call void @non_dead_b2() #[[ATTR17]]
; IS__CGSCC____-NEXT: call void @non_dead_b3() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: br label [[BB1:%.*]]
; IS__CGSCC____: bb1:
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-NEXT: call void @non_dead_b4() #[[ATTR17]]
; IS__CGSCC____-NEXT: call void @non_dead_b5() #[[ATTR17]]
; IS__CGSCC____-NEXT: call void @non_dead_b6() #[[ATTR17]]
; IS__CGSCC____-NEXT: call void @non_dead_b7() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: br label [[BB2:%.*]]
; IS__CGSCC____: bb2:
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-NEXT: call void @non_dead_b8() #[[ATTR17]]
; IS__CGSCC____-NEXT: call void @non_dead_b9() #[[ATTR17]]
; IS__CGSCC____-NEXT: call void @non_dead_b10() #[[ATTR17]]
; IS__CGSCC____-NEXT: call void @non_dead_b11() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: br label [[BB3:%.*]]
; IS__CGSCC____: bb3:
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-NEXT: call void @non_dead_b12() #[[ATTR17]]
; IS__CGSCC____-NEXT: call void @non_dead_b13() #[[ATTR17]]
; IS__CGSCC____-NEXT: call void @non_dead_b14() #[[ATTR17]]
; IS__CGSCC____-NEXT: call void @non_dead_b15() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: br label [[BB4:%.*]]
; IS__CGSCC____: bb4:
; IS__CGSCC____-NEXT: call void @non_exact2()
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2019-09-04 18:35:20 +02:00
bb0:
call void @non_dead_b0 ( )
call void @non_dead_b1 ( )
call void @non_dead_b2 ( )
call void @non_dead_b3 ( )
br label %bb1
bb1:
call void @non_dead_b4 ( )
call void @non_dead_b5 ( )
call void @non_dead_b6 ( )
call void @non_dead_b7 ( )
br label %bb2
bb2:
call void @non_dead_b8 ( )
call void @non_dead_b9 ( )
call void @non_dead_b10 ( )
call void @non_dead_b11 ( )
br label %bb3
bb3:
call void @non_dead_b12 ( )
call void @non_dead_b13 ( )
call void @non_dead_b14 ( )
call void @non_dead_b15 ( )
br label %bb4
bb4:
call void @non_exact2 ( )
ret void
}
define linkonce_odr void @non_exact2 ( ) {
2020-08-29 19:31:13 +02:00
; CHECK-LABEL: define {{[^@]+}}@non_exact2() {
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: call void @non_dead_c0() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c1() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c2() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c3() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c4() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c5() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c6() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c7() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c8() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c9() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c10() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c11() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c12() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c13() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c14() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_c15() #[[ATTR2]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: call void @non_exact3()
; CHECK-NEXT: ret void
;
2019-09-04 18:35:20 +02:00
call void @non_dead_c0 ( )
call void @non_dead_c1 ( )
call void @non_dead_c2 ( )
call void @non_dead_c3 ( )
call void @non_dead_c4 ( )
call void @non_dead_c5 ( )
call void @non_dead_c6 ( )
call void @non_dead_c7 ( )
call void @non_dead_c8 ( )
call void @non_dead_c9 ( )
call void @non_dead_c10 ( )
call void @non_dead_c11 ( )
call void @non_dead_c12 ( )
call void @non_dead_c13 ( )
call void @non_dead_c14 ( )
call void @non_dead_c15 ( )
call void @non_exact3 ( )
ret void
}
define linkonce_odr void @non_exact3 ( ) {
2020-08-29 19:31:13 +02:00
; CHECK-LABEL: define {{[^@]+}}@non_exact3() {
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: call void @non_dead_d0() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d1() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d2() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d3() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d4() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d5() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d6() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d7() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d8() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d9() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d10() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d11() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d12() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d13() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d14() #[[ATTR2]]
; CHECK-NEXT: call void @non_dead_d15() #[[ATTR2]]
; CHECK-NEXT: [[NR:%.*]] = call i32 @foo_noreturn() #[[ATTR4]]
2020-05-11 19:22:41 +02:00
; CHECK-NEXT: unreachable
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2019-09-04 18:35:20 +02:00
call void @non_dead_d0 ( )
call void @non_dead_d1 ( )
call void @non_dead_d2 ( )
call void @non_dead_d3 ( )
call void @non_dead_d4 ( )
call void @non_dead_d5 ( )
call void @non_dead_d6 ( )
call void @non_dead_d7 ( )
call void @non_dead_d8 ( )
call void @non_dead_d9 ( )
call void @non_dead_d10 ( )
call void @non_dead_d11 ( )
call void @non_dead_d12 ( )
call void @non_dead_d13 ( )
call void @non_dead_d14 ( )
call void @non_dead_d15 ( )
%nr = call i32 @foo_noreturn ( )
call void @dead_e1 ( )
ret void
}
2020-01-12 07:34:38 +01:00
define internal void @non_dead_a0 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a0
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a0
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13:[0-9]+]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a1 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a1
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a1
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a2 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a2
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a2
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a3 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a3
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a3
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a4 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a4
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a4
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a5 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a5
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a5
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a6 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a6
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a6
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a7 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a7
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a7
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a8 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a8
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a8
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a9 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a9
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a9
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a10 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a10
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a10
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a11 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a11
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a11
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a12 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a12
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a12
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a13 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a13
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a13
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a14 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a14
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a14
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_a15 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_a15
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_a15
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b0 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b0
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b0
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b1 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b1
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b1
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b2 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b2
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b2
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b3 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b3
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b3
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b4 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b4
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b4
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b5 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b5
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b5
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b6 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b6
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b6
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b7 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b7
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b7
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b8 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b8
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b8
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b9 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b9
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b9
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b10 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b10
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b10
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b11 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b11
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b11
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b12 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b12
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b12
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b13 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b13
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b13
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b14 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b14
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b14
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_b15 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_b15
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_b15
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c0 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c0
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c0
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c1 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c1
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c1
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c2 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c2
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c2
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c3 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c3
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c3
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c4 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c4
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c4
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c5 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c5
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c5
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c6 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c6
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c6
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c7 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c7
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c7
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c8 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c8
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c8
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c9 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c9
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c9
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c10 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c10
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c10
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c11 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c11
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c11
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c12 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c12
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c12
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c13 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c13
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c13
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c14 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c14
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c14
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_c15 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_c15
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_c15
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d0 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d0
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d0
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d1 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d1
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d1
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d2 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d2
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d2
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d3 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d3
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d3
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d4 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d4
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d4
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d5 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d5
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d5
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d6 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d6
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d6
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d7 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d7
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d7
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d8 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d8
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d8
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d9 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d9
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d9
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d10 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d10
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d10
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d11 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d11
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d11
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d12 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d12
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d12
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d13 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d13
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d13
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d14 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d14
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d14
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
define internal void @non_dead_d15 ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@non_dead_d15
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@non_dead_d15
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
ret void
}
2019-09-04 18:35:20 +02:00
define internal void @dead_e0 ( ) { call void @dead_e1 ( ) ret void }
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@dead_e0() {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC____-NEXT: call void @dead_e1()
; IS__CGSCC____-NEXT: ret void
;
2019-09-04 18:35:20 +02:00
define internal void @dead_e1 ( ) { call void @dead_e2 ( ) ret void }
define internal void @dead_e2 ( ) { ret void }
; Verify we actually deduce information for these functions.
2019-09-04 22:34:52 +02:00
declare void @blowup ( ) noreturn
define void @live_with_dead_entry ( ) personality i8 * bitcast ( i32 ( . . . ) * @__gxx_personality_v0 to i8 * ) {
entry:
invoke void @blowup ( ) to label %live_with_dead_entry unwind label %lpad
lpad:
%0 = landingpad { i8 * , i32 } catch i8 * null
br label %live_with_dead_entry
live_with_dead_entry:
ret void
}
define void @live_with_dead_entry_lp ( ) personality i8 * bitcast ( i32 ( . . . ) * @__gxx_personality_v0 to i8 * ) {
2020-07-19 21:55:43 +02:00
; CHECK: Function Attrs: nounwind
2020-08-11 03:31:30 +02:00
; CHECK-LABEL: define {{[^@]+}}@live_with_dead_entry_lp
2021-02-22 21:38:23 +01:00
; CHECK-SAME: () #[[ATTR2]] personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: entry:
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: invoke void @blowup() #[[ATTR4]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: to label [[LIVE_WITH_DEAD_ENTRY_DEAD:%.*]] unwind label [[LP1:%.*]]
; CHECK: lp1:
; CHECK-NEXT: [[LP:%.*]] = landingpad { i8*, i32 }
; CHECK-NEXT: catch i8* null
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: invoke void @blowup() #[[ATTR4]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: to label [[LIVE_WITH_DEAD_ENTRY_DEAD1:%.*]] unwind label [[LP2:%.*]]
; CHECK: lp2:
; CHECK-NEXT: [[TMP0:%.*]] = landingpad { i8*, i32 }
; CHECK-NEXT: catch i8* null
; CHECK-NEXT: br label [[LIVE_WITH_DEAD_ENTRY:%.*]]
; CHECK: live_with_dead_entry.dead:
; CHECK-NEXT: unreachable
; CHECK: live_with_dead_entry.dead1:
; CHECK-NEXT: unreachable
; CHECK: live_with_dead_entry:
; CHECK-NEXT: ret void
;
2019-09-04 22:34:52 +02:00
entry:
invoke void @blowup ( ) to label %live_with_dead_entry unwind label %lp1
lp1:
%lp = landingpad { i8 * , i32 } catch i8 * null
invoke void @blowup ( ) to label %live_with_dead_entry unwind label %lp2
lp2:
%0 = landingpad { i8 * , i32 } catch i8 * null
br label %live_with_dead_entry
live_with_dead_entry:
ret void
}
2019-10-13 10:08:18 +02:00
define internal void @useless_arg_sink ( i32 * %a ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@useless_arg_sink
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@useless_arg_sink
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-01-12 07:34:38 +01:00
call void @sink ( )
2019-10-13 10:08:18 +02:00
ret void
}
define internal void @useless_arg_almost_sink ( i32 * %a ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@useless_arg_almost_sink
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: call void @useless_arg_sink() #[[ATTR11]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@useless_arg_almost_sink
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: call void @useless_arg_sink() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2019-10-13 10:08:18 +02:00
call void @useless_arg_sink ( i32 * %a )
ret void
}
; Check we do not annotate the function interface of this weak function.
define weak_odr void @useless_arg_ext ( i32 * %a ) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-LABEL: define {{[^@]+}}@useless_arg_ext
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32* [[A:%.*]]) {
2021-02-22 21:38:23 +01:00
; CHECK-NEXT: call void @useless_arg_almost_sink() #[[ATTR2]]
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: ret void
;
2019-10-13 10:08:18 +02:00
call void @useless_arg_almost_sink ( i32 * %a )
ret void
}
define internal void @useless_arg_ext_int ( i32 * %a ) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-LABEL: define {{[^@]+}}@useless_arg_ext_int
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32* [[A:%.*]]) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: call void @useless_arg_ext(i32* [[A]])
; CHECK-NEXT: ret void
;
2019-10-13 10:08:18 +02:00
call void @useless_arg_ext ( i32 * %a )
ret void
}
define void @useless_arg_ext_int_ext ( i32 * %a ) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-LABEL: define {{[^@]+}}@useless_arg_ext_int_ext
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32* [[A:%.*]]) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: call void @useless_arg_ext_int(i32* [[A]])
; CHECK-NEXT: ret void
;
2019-10-13 10:08:18 +02:00
call void @useless_arg_ext_int ( i32 * %a )
ret void
}
2019-11-01 19:57:49 +01:00
; FIXME: We should fold terminators.
define internal i32 @switch_default ( i64 %i ) nounwind {
2020-07-19 21:55:43 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@switch_default
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
2020-04-23 01:06:02 +02:00
; NOT_CGSCC_NPM-NEXT: entry:
; NOT_CGSCC_NPM-NEXT: switch i64 0, label [[SW_DEFAULT:%.*]] [
; NOT_CGSCC_NPM-NEXT: i64 3, label [[RETURN:%.*]]
; NOT_CGSCC_NPM-NEXT: i64 10, label [[RETURN]]
; NOT_CGSCC_NPM-NEXT: ]
; NOT_CGSCC_NPM: sw.default:
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-NEXT: call void @sink() #[[ATTR14]]
2020-04-23 01:06:02 +02:00
; NOT_CGSCC_NPM-NEXT: ret i32 undef
; NOT_CGSCC_NPM: return:
; NOT_CGSCC_NPM-NEXT: unreachable
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
;
2020-07-19 21:55:43 +02:00
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@switch_default
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC____-NEXT: entry:
; IS__CGSCC____-NEXT: switch i64 0, label [[SW_DEFAULT:%.*]] [
; IS__CGSCC____-NEXT: i64 3, label [[RETURN:%.*]]
; IS__CGSCC____-NEXT: i64 10, label [[RETURN]]
; IS__CGSCC____-NEXT: ]
; IS__CGSCC____: sw.default:
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-NEXT: call void @sink() #[[ATTR17]]
2020-08-30 10:29:07 +02:00
; IS__CGSCC____-NEXT: ret i32 undef
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC____: return:
; IS__CGSCC____-NEXT: unreachable
2019-11-01 19:57:49 +01:00
;
entry:
switch i64 %i , label %sw.default [
i64 3 , label %return
i64 10 , label %return
]
sw.default:
2020-01-12 07:17:08 +01:00
call void @sink ( )
2019-11-01 19:57:49 +01:00
ret i32 123
return:
ret i32 0
}
define i32 @switch_default_caller ( ) {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@switch_default_caller
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR11]] {
; NOT_CGSCC_NPM-NEXT: [[CALL2:%.*]] = tail call i32 @switch_default() #[[ATTR11]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret i32 123
;
; IS__CGSCC____: Function Attrs: nofree nosync nounwind willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@switch_default_caller
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR13]] {
; IS__CGSCC____-NEXT: [[CALL2:%.*]] = tail call i32 @switch_default() #[[ATTR17]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret i32 123
2019-11-01 19:57:49 +01:00
;
%call2 = tail call i32 @switch_default ( i64 0 )
ret i32 %call2
}
2020-01-12 07:17:08 +01:00
define internal i32 @switch_default_dead ( i64 %i ) nounwind {
2020-07-19 21:55:43 +02:00
; IS__CGSCC____: Function Attrs: nofree norecurse nosync nounwind readnone willreturn
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@switch_default_dead
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR6]] {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC____-NEXT: entry:
; IS__CGSCC____-NEXT: switch i64 0, label [[SW_DEFAULT:%.*]] [
; IS__CGSCC____-NEXT: i64 3, label [[RETURN:%.*]]
; IS__CGSCC____-NEXT: i64 10, label [[RETURN]]
; IS__CGSCC____-NEXT: ]
; IS__CGSCC____: sw.default:
2020-08-30 10:29:07 +02:00
; IS__CGSCC____-NEXT: ret i32 undef
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC____: return:
; IS__CGSCC____-NEXT: unreachable
2020-02-16 23:42:47 +01:00
;
2020-01-12 07:17:08 +01:00
entry:
switch i64 %i , label %sw.default [
i64 3 , label %return
i64 10 , label %return
]
sw.default:
ret i32 123
return:
ret i32 0
}
define i32 @switch_default_dead_caller ( ) {
2020-07-19 21:55:43 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind readnone willreturn
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@switch_default_dead_caller
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR12:[0-9]+]] {
2020-07-19 21:55:43 +02:00
; NOT_CGSCC_NPM-NEXT: ret i32 123
;
; IS__CGSCC____: Function Attrs: nofree norecurse nosync nounwind readnone willreturn
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@switch_default_dead_caller
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR6]] {
2020-07-19 21:55:43 +02:00
; IS__CGSCC____-NEXT: ret i32 123
2020-01-12 07:17:08 +01:00
;
%call2 = tail call i32 @switch_default_dead ( i64 0 )
ret i32 %call2
}
2019-11-01 04:45:17 +01:00
2020-02-16 23:42:47 +01:00
define void @call_via_pointer_with_dead_args ( i32 * %a , i32 * %b , void ( i32 * , i32 * , i32 * , i64 , i32 * * ) * %fp ) {
; CHECK-LABEL: define {{[^@]+}}@call_via_pointer_with_dead_args
2021-02-13 08:22:25 +01:00
; CHECK-SAME: (i32* [[A:%.*]], i32* [[B:%.*]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull [[FP:%.*]]) {
2020-02-16 23:42:47 +01:00
; CHECK-NEXT: call void [[FP]](i32* [[A]], i32* [[B]], i32* [[A]], i64 -1, i32** null)
; CHECK-NEXT: ret void
;
call void %fp ( i32 * %a , i32 * %b , i32 * %a , i64 -1 , i32 * * null )
ret void
}
; FIXME: We have to prevent the propagation of %fp in the new pm CGSCC pass until the CallGraphUpdater can handle the new call edge.
define internal void @call_via_pointer_with_dead_args_internal_a ( i32 * %a , i32 * %b , void ( i32 * , i32 * , i32 * , i64 , i32 * * ) * %fp ) {
2020-04-23 01:06:02 +02:00
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@call_via_pointer_with_dead_args_internal_a
2021-05-08 06:06:44 +02:00
; NOT_CGSCC_NPM-SAME: (i32* [[A:%.*]], i32* noundef nonnull align 128 dereferenceable(4) [[B:%.*]]) {
2020-04-23 01:06:02 +02:00
; NOT_CGSCC_NPM-NEXT: call void @called_via_pointer(i32* [[A]], i32* nonnull align 128 dereferenceable(4) [[B]], i32* [[A]], i64 -1, i32** null)
; NOT_CGSCC_NPM-NEXT: ret void
2020-02-16 23:42:47 +01:00
;
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@call_via_pointer_with_dead_args_internal_a
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-SAME: (i32* [[A:%.*]], i32* noundef nonnull align 128 dereferenceable(4) [[B:%.*]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull [[FP:%.*]]) {
2020-05-10 20:16:49 +02:00
; IS__CGSCC____-NEXT: call void [[FP]](i32* [[A]], i32* nonnull align 128 dereferenceable(4) [[B]], i32* [[A]], i64 -1, i32** null)
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC____-NEXT: ret void
2020-02-16 23:42:47 +01:00
;
call void %fp ( i32 * %a , i32 * %b , i32 * %a , i64 -1 , i32 * * null )
ret void
}
define internal void @call_via_pointer_with_dead_args_internal_b ( i32 * %a , i32 * %b , void ( i32 * , i32 * , i32 * , i64 , i32 * * ) * %fp ) {
2020-04-23 01:06:02 +02:00
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@call_via_pointer_with_dead_args_internal_b
2021-05-08 06:06:44 +02:00
; NOT_CGSCC_NPM-SAME: (i32* [[A:%.*]], i32* noundef nonnull align 128 dereferenceable(4) [[B:%.*]]) {
2020-04-23 01:06:02 +02:00
; NOT_CGSCC_NPM-NEXT: call void @called_via_pointer_internal_2(i32* [[A]], i32* nonnull align 128 dereferenceable(4) [[B]], i32* [[A]], i64 -1, i32** null)
; NOT_CGSCC_NPM-NEXT: ret void
2020-03-13 06:59:02 +01:00
;
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@call_via_pointer_with_dead_args_internal_b
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-SAME: (i32* [[A:%.*]], i32* noundef nonnull align 128 dereferenceable(4) [[B:%.*]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull [[FP:%.*]]) {
2020-05-10 20:16:49 +02:00
; IS__CGSCC____-NEXT: call void [[FP]](i32* [[A]], i32* nonnull align 128 dereferenceable(4) [[B]], i32* [[A]], i64 -1, i32** null)
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC____-NEXT: ret void
2020-02-16 23:42:47 +01:00
;
call void %fp ( i32 * %a , i32 * %b , i32 * %a , i64 -1 , i32 * * null )
ret void
}
define void @call_via_pointer_with_dead_args_caller ( i32 * %a , i32 * %b ) {
2020-08-18 02:54:42 +02:00
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@call_via_pointer_with_dead_args_caller
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-SAME: (i32* [[A:%.*]], i32* [[B:%.*]]) {
2020-08-18 02:54:42 +02:00
; NOT_CGSCC_NPM-NEXT: [[PTR1:%.*]] = alloca i32, align 128
; NOT_CGSCC_NPM-NEXT: [[PTR2:%.*]] = alloca i32, align 128
; NOT_CGSCC_NPM-NEXT: [[PTR3:%.*]] = alloca i32, align 128
; NOT_CGSCC_NPM-NEXT: [[PTR4:%.*]] = alloca i32, align 128
2020-08-18 11:04:47 +02:00
; NOT_CGSCC_NPM-NEXT: call void @call_via_pointer_with_dead_args(i32* [[A]], i32* noundef nonnull align 128 dereferenceable(4) [[PTR1]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef @called_via_pointer)
; NOT_CGSCC_NPM-NEXT: call void @call_via_pointer_with_dead_args(i32* [[A]], i32* noundef nonnull align 128 dereferenceable(4) [[PTR2]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef @called_via_pointer_internal_1)
2021-05-08 06:06:44 +02:00
; NOT_CGSCC_NPM-NEXT: call void @call_via_pointer_with_dead_args_internal_a(i32* [[B]], i32* noundef nonnull align 128 dereferenceable(4) [[PTR3]])
; NOT_CGSCC_NPM-NEXT: call void @call_via_pointer_with_dead_args_internal_b(i32* [[B]], i32* noundef nonnull align 128 dereferenceable(4) [[PTR4]])
2020-08-18 02:54:42 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
; IS__CGSCC____-LABEL: define {{[^@]+}}@call_via_pointer_with_dead_args_caller
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-SAME: (i32* [[A:%.*]], i32* [[B:%.*]]) {
2020-08-18 02:54:42 +02:00
; IS__CGSCC____-NEXT: [[PTR1:%.*]] = alloca i32, align 128
; IS__CGSCC____-NEXT: [[PTR2:%.*]] = alloca i32, align 128
; IS__CGSCC____-NEXT: [[PTR3:%.*]] = alloca i32, align 128
; IS__CGSCC____-NEXT: [[PTR4:%.*]] = alloca i32, align 128
2020-08-18 11:04:47 +02:00
; IS__CGSCC____-NEXT: call void @call_via_pointer_with_dead_args(i32* [[A]], i32* noundef nonnull align 128 dereferenceable(4) [[PTR1]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull @called_via_pointer)
; IS__CGSCC____-NEXT: call void @call_via_pointer_with_dead_args(i32* [[A]], i32* noundef nonnull align 128 dereferenceable(4) [[PTR2]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull @called_via_pointer_internal_1)
; IS__CGSCC____-NEXT: call void @call_via_pointer_with_dead_args_internal_a(i32* [[B]], i32* noundef nonnull align 128 dereferenceable(4) [[PTR3]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull @called_via_pointer)
; IS__CGSCC____-NEXT: call void @call_via_pointer_with_dead_args_internal_b(i32* [[B]], i32* noundef nonnull align 128 dereferenceable(4) [[PTR4]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull @called_via_pointer_internal_2)
2020-08-18 02:54:42 +02:00
; IS__CGSCC____-NEXT: ret void
2020-02-16 23:42:47 +01:00
;
%ptr1 = alloca i32 , align 128
%ptr2 = alloca i32 , align 128
%ptr3 = alloca i32 , align 128
%ptr4 = alloca i32 , align 128
call void @call_via_pointer_with_dead_args ( i32 * %a , i32 * %ptr1 , void ( i32 * , i32 * , i32 * , i64 , i32 * * ) * @called_via_pointer )
call void @call_via_pointer_with_dead_args ( i32 * %a , i32 * %ptr2 , void ( i32 * , i32 * , i32 * , i64 , i32 * * ) * @called_via_pointer_internal_1 )
call void @call_via_pointer_with_dead_args_internal_a ( i32 * %b , i32 * %ptr3 , void ( i32 * , i32 * , i32 * , i64 , i32 * * ) * @called_via_pointer )
call void @call_via_pointer_with_dead_args_internal_b ( i32 * %b , i32 * %ptr4 , void ( i32 * , i32 * , i32 * , i64 , i32 * * ) * @called_via_pointer_internal_2 )
ret void
}
define void @called_via_pointer ( i32 * %a , i32 * %b , i32 * %c , i64 %d , i32 * * %e ) {
; CHECK-LABEL: define {{[^@]+}}@called_via_pointer
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32* [[A:%.*]], i32* nocapture nofree readnone [[B:%.*]], i32* nocapture nofree readnone [[C:%.*]], i64 [[D:%.*]], i32** nocapture nofree readnone [[E:%.*]]) {
2020-02-16 23:42:47 +01:00
; CHECK-NEXT: entry:
; CHECK-NEXT: tail call void @use_i32p(i32* [[A]])
; CHECK-NEXT: tail call void @use_i32p(i32* [[A]])
; CHECK-NEXT: ret void
;
entry:
tail call void @use_i32p ( i32 * %a )
tail call void @use_i32p ( i32 * %a )
ret void
}
define internal void @called_via_pointer_internal_1 ( i32 * %a , i32 * %b , i32 * %c , i64 %d , i32 * * %e ) {
; CHECK-LABEL: define {{[^@]+}}@called_via_pointer_internal_1
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32* [[A:%.*]], i32* nocapture nofree readnone [[B:%.*]], i32* nocapture nofree readnone [[C:%.*]], i64 [[D:%.*]], i32** nocapture nofree readnone [[E:%.*]]) {
2020-02-16 23:42:47 +01:00
; CHECK-NEXT: entry:
; CHECK-NEXT: tail call void @use_i32p(i32* [[A]])
; CHECK-NEXT: tail call void @use_i32p(i32* [[A]])
; CHECK-NEXT: ret void
;
entry:
tail call void @use_i32p ( i32 * %a )
tail call void @use_i32p ( i32 * %a )
ret void
}
; FIXME: Figure out why the MODULE has the unused arguments still
define internal void @called_via_pointer_internal_2 ( i32 * %a , i32 * %b , i32 * %c , i64 %d , i32 * * %e ) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-LABEL: define {{[^@]+}}@called_via_pointer_internal_2
2020-08-29 19:31:13 +02:00
; CHECK-SAME: (i32* [[A:%.*]], i32* nocapture nofree readnone [[B:%.*]], i32* nocapture nofree readnone [[C:%.*]], i64 [[D:%.*]], i32** nocapture nofree readnone [[E:%.*]]) {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; CHECK-NEXT: entry:
; CHECK-NEXT: tail call void @use_i32p(i32* [[A]])
; CHECK-NEXT: tail call void @use_i32p(i32* [[A]])
; CHECK-NEXT: ret void
2020-02-16 23:42:47 +01:00
;
entry:
tail call void @use_i32p ( i32 * %a )
tail call void @use_i32p ( i32 * %a )
ret void
}
declare void @use_i32p ( i32 * )
2019-11-02 04:35:18 +01:00
; Allow blockaddress users
define internal void @dead_with_blockaddress_users ( i32 * nocapture %pc ) nounwind readonly {
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC_OPM-LABEL: define {{[^@]+}}@dead_with_blockaddress_users
2021-02-22 21:38:23 +01:00
; IS__CGSCC_OPM-SAME: (i32* noalias nocapture nofree nonnull readonly align 536870912 dereferenceable(4294967295) [[PC:%.*]])
[Attributor] Unify testing (=updates,prefixes,run configurations,...)
When the Attributor was created the test update scripts were not well
suited to deal with the challenges of IR attribute checking. This
partially improved.
Since then we also added three additional configurations that need
testing; in total we now have the following four:
{ TUNIT, CGSCC } x { old pass manager (OPM), new pass manager (NPM) }
Finally, the number of developers and tests grew rapidly (partially due
to the addition of ArgumentPromotion and IPConstantProp tests), which
resulted in tests only being run in some configurations, different
prefixes being used, and different "styles" of checks being used.
Due to the above reasons I believed we needed to take another look at
the test update scripts. While we started to use them, via UTC_ARGS:
--enable/disable, the other problems remained. To improve the testing
situation for *all* configurations, to simplify future updates to the
test, and to help identify subtle effects of future changes, we now use
the test update scripts for (almost) all Attributor tests.
An exhaustive prefix list minimizes the number of check lines and makes
it easy to identify and compare configurations.
Tests have been adjusted in the process but we tried to keep their
intend unchanged.
Reviewed By: sstefan1
Differential Revision: https://reviews.llvm.org/D76588
2020-04-09 02:04:57 +02:00
; IS__CGSCC_OPM-NEXT: entry:
; IS__CGSCC_OPM-NEXT: br label [[INDIRECTGOTO:%.*]]
; IS__CGSCC_OPM: lab0:
; IS__CGSCC_OPM-NEXT: [[INDVAR_NEXT:%.*]] = add i32 [[INDVAR:%.*]], 1
; IS__CGSCC_OPM-NEXT: br label [[INDIRECTGOTO]]
; IS__CGSCC_OPM: end:
; IS__CGSCC_OPM-NEXT: ret void
; IS__CGSCC_OPM: indirectgoto:
; IS__CGSCC_OPM-NEXT: [[INDVAR]] = phi i32 [ [[INDVAR_NEXT]], [[LAB0:%.*]] ], [ 0, [[ENTRY:%.*]] ]
; IS__CGSCC_OPM-NEXT: [[PC_ADDR_0:%.*]] = getelementptr i32, i32* [[PC]], i32 [[INDVAR]]
; IS__CGSCC_OPM-NEXT: [[TMP1_PN:%.*]] = load i32, i32* [[PC_ADDR_0]]
; IS__CGSCC_OPM-NEXT: [[INDIRECT_GOTO_DEST_IN:%.*]] = getelementptr inbounds [2 x i8*], [2 x i8*]* @dead_with_blockaddress_users.l, i32 0, i32 [[TMP1_PN]]
; IS__CGSCC_OPM-NEXT: [[INDIRECT_GOTO_DEST:%.*]] = load i8*, i8** [[INDIRECT_GOTO_DEST_IN]]
; IS__CGSCC_OPM-NEXT: indirectbr i8* [[INDIRECT_GOTO_DEST]], [label [[LAB0]], label %end]
;
2021-02-22 21:38:23 +01:00
; IS__CGSCC____: Function Attrs: nofree norecurse nosync nounwind readnone
; IS__CGSCC____-LABEL: define {{[^@]+}}@dead_with_blockaddress_users
2021-05-08 06:06:44 +02:00
; IS__CGSCC____-SAME: () #[[ATTR14:[0-9]+]] {
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-NEXT: entry:
; IS__CGSCC____-NEXT: br label [[INDIRECTGOTO:%.*]]
; IS__CGSCC____: lab0:
; IS__CGSCC____-NEXT: [[INDVAR_NEXT:%.*]] = add i32 [[INDVAR:%.*]], 1
; IS__CGSCC____-NEXT: br label [[INDIRECTGOTO]]
; IS__CGSCC____: end:
; IS__CGSCC____-NEXT: ret void
; IS__CGSCC____: indirectgoto:
; IS__CGSCC____-NEXT: [[INDVAR]] = phi i32 [ [[INDVAR_NEXT]], [[LAB0:%.*]] ], [ 0, [[ENTRY:%.*]] ]
2021-07-16 01:24:58 +02:00
; IS__CGSCC____-NEXT: indirectbr i8* undef, [label [[LAB0]], label %end]
2021-02-22 21:38:23 +01:00
;
2019-11-02 04:35:18 +01:00
entry:
br label %indirectgoto
lab0: ; preds = %indirectgoto
%indvar.next = add i32 %indvar , 1 ; <i32> [#uses=1]
br label %indirectgoto
end: ; preds = %indirectgoto
ret void
indirectgoto: ; preds = %lab0, %entry
%indvar = phi i32 [ %indvar.next , %lab0 ] , [ 0 , %entry ] ; <i32> [#uses=2]
%pc.addr.0 = getelementptr i32 , i32 * %pc , i32 %indvar ; <i32*> [#uses=1]
%tmp1.pn = load i32 , i32 * %pc.addr.0 ; <i32> [#uses=1]
%indirect.goto.dest.in = getelementptr inbounds [ 2 x i8 * ] , [ 2 x i8 * ] * @dead_with_blockaddress_users.l , i32 0 , i32 %tmp1.pn ; <i8**> [#uses=1]
%indirect.goto.dest = load i8 * , i8 * * %indirect.goto.dest.in ; <i8*> [#uses=1]
indirectbr i8 * %indirect.goto.dest , [ label %lab0 , label %end ]
}
2020-05-07 23:50:50 +02:00
; The code below exposed a bug that caused %call to be replaced with `undef`.
%struct.a = type { %struct.a * }
@e = global %struct.a * null
define i32 @main ( ) {
2020-08-29 19:31:13 +02:00
; CHECK-LABEL: define {{[^@]+}}@main() {
2020-05-07 23:50:50 +02:00
; CHECK-NEXT: entry:
2020-07-10 17:37:31 +02:00
; CHECK-NEXT: [[F:%.*]] = alloca i32, align 4
2020-05-07 23:50:50 +02:00
; CHECK-NEXT: br label [[FOR_COND_0:%.*]]
; CHECK: for.cond.0:
; CHECK-NEXT: [[G_0:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[INC:%.*]], [[FOR_BODY_0:%.*]] ]
; CHECK-NEXT: [[CMP_0:%.*]] = icmp ult i32 [[G_0]], 100
; CHECK-NEXT: br i1 [[CMP_0]], label [[FOR_BODY_0]], label [[FOR_END_0:%.*]]
; CHECK: for.body.0:
; CHECK-NEXT: [[INC]] = add nuw nsw i32 [[G_0]], 1
; CHECK-NEXT: br label [[FOR_COND_0]]
; CHECK: for.end.0:
2020-08-29 22:34:24 +02:00
; CHECK-NEXT: [[CALL:%.*]] = call i8* @malloc(i64 noundef 8)
2020-05-07 23:50:50 +02:00
; CHECK-NEXT: store i8* [[CALL]], i8** bitcast (%struct.a** @e to i8**), align 8
; CHECK-NEXT: [[B:%.*]] = bitcast i8* [[CALL]] to %struct.a**
; CHECK-NEXT: store %struct.a* null, %struct.a** [[B]], align 8
; CHECK-NEXT: br label [[FOR_COND_1:%.*]]
; CHECK: for.cond.1:
; CHECK-NEXT: [[G_1:%.*]] = phi i32 [ 0, [[FOR_END_0]] ], [ [[INC6:%.*]], [[FOR_BODY_1:%.*]] ]
; CHECK-NEXT: [[CMP_1:%.*]] = icmp ult i32 [[G_1]], 100
; CHECK-NEXT: br i1 [[CMP_1]], label [[FOR_BODY_1]], label [[FOR_END_1:%.*]]
; CHECK: for.body.1:
; CHECK-NEXT: [[CALL4:%.*]] = call i32 (i32*, ...) bitcast (i32 (i32)* @h to i32 (i32*, ...)*)(i32* nonnull [[F]])
; CHECK-NEXT: [[INC6]] = add nuw nsw i32 [[G_1]], 1
; CHECK-NEXT: br label [[FOR_COND_1]]
; CHECK: for.end.1:
; CHECK-NEXT: ret i32 0
;
entry:
%f = alloca i32
br label %for.cond.0
for.cond.0:
%g.0 = phi i32 [ 0 , %entry ] , [ %inc , %for.body.0 ]
%cmp.0 = icmp ult i32 %g.0 , 100
br i1 %cmp.0 , label %for.body.0 , label %for.end.0
for.body.0:
%inc = add nuw nsw i32 %g.0 , 1
br label %for.cond.0
for.end.0:
%call = call i8 * @malloc ( i64 8 )
store i8 * %call , i8 * * bitcast ( %struct.a * * @e to i8 * * )
%b = bitcast i8 * %call to %struct.a * *
store %struct.a * null , %struct.a * * %b
br label %for.cond.1
for.cond.1:
%g.1 = phi i32 [ 0 , %for.end.0 ] , [ %inc6 , %for.body.1 ]
%cmp.1 = icmp ult i32 %g.1 , 100
br i1 %cmp.1 , label %for.body.1 , label %for.end.1
for.body.1:
%call4 = call i32 ( i32 * , . . . ) bitcast ( i32 ( i32 ) * @h to i32 ( i32 * , . . . ) * ) ( i32 * nonnull %f )
%inc6 = add nuw nsw i32 %g.1 , 1
br label %for.cond.1
for.end.1:
ret i32 0
}
declare noalias i8 * @malloc ( i64 )
define i32 @h ( i32 %i ) {
2020-07-19 21:55:43 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind readnone willreturn
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@h
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: (i32 [[I:%.*]]) #[[ATTR12]] {
2020-07-19 21:55:43 +02:00
; NOT_CGSCC_NPM-NEXT: ret i32 0
;
; IS__CGSCC____: Function Attrs: nofree norecurse nosync nounwind readnone willreturn
; IS__CGSCC____-LABEL: define {{[^@]+}}@h
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: (i32 [[I:%.*]]) #[[ATTR6]] {
2020-07-19 21:55:43 +02:00
; IS__CGSCC____-NEXT: ret i32 0
2020-05-07 23:50:50 +02:00
;
ret i32 0
}
2020-05-11 19:22:41 +02:00
; Verify we do not choke on the GEP in the unreachable block.
@p = global i8 0
define void @bad_gep ( ) {
2020-10-15 13:04:36 +02:00
; NOT_CGSCC_NPM: Function Attrs: nofree nosync nounwind readnone willreturn
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@bad_gep
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-SAME: () #[[ATTR12]] {
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: entry:
; NOT_CGSCC_NPM-NEXT: [[N:%.*]] = alloca i8, align 1
; NOT_CGSCC_NPM-NEXT: [[M:%.*]] = alloca i8, align 1
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-NEXT: call void @llvm.lifetime.start.p0i8(i64 noundef 1, i8* noalias nocapture nofree noundef nonnull dereferenceable(1) [[N]]) #[[ATTR15:[0-9]+]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: br label [[EXIT:%.*]]
; NOT_CGSCC_NPM: while.body:
; NOT_CGSCC_NPM-NEXT: unreachable
; NOT_CGSCC_NPM: if.then:
; NOT_CGSCC_NPM-NEXT: unreachable
; NOT_CGSCC_NPM: if.end:
; NOT_CGSCC_NPM-NEXT: unreachable
; NOT_CGSCC_NPM: exit:
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM-NEXT: call void @llvm.lifetime.end.p0i8(i64 noundef 1, i8* noalias nocapture nofree noundef nonnull dereferenceable(1) [[N]]) #[[ATTR15]]
2020-08-29 19:31:13 +02:00
; NOT_CGSCC_NPM-NEXT: ret void
;
2020-10-15 13:04:36 +02:00
; IS__CGSCC____: Function Attrs: nofree nosync nounwind readnone willreturn
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-LABEL: define {{[^@]+}}@bad_gep
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-SAME: () #[[ATTR15:[0-9]+]] {
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: entry:
; IS__CGSCC____-NEXT: [[N:%.*]] = alloca i8, align 1
; IS__CGSCC____-NEXT: [[M:%.*]] = alloca i8, align 1
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-NEXT: call void @llvm.lifetime.start.p0i8(i64 noundef 1, i8* noalias nocapture nofree noundef nonnull dereferenceable(1) [[N]]) #[[ATTR18:[0-9]+]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: br label [[EXIT:%.*]]
; IS__CGSCC____: while.body:
; IS__CGSCC____-NEXT: unreachable
; IS__CGSCC____: if.then:
; IS__CGSCC____-NEXT: unreachable
; IS__CGSCC____: if.end:
; IS__CGSCC____-NEXT: unreachable
; IS__CGSCC____: exit:
2021-02-22 21:38:23 +01:00
; IS__CGSCC____-NEXT: call void @llvm.lifetime.end.p0i8(i64 noundef 1, i8* noalias nocapture nofree noundef nonnull dereferenceable(1) [[N]]) #[[ATTR18]]
2020-08-29 19:31:13 +02:00
; IS__CGSCC____-NEXT: ret void
2020-05-11 19:22:41 +02:00
;
entry:
%n = alloca i8
%m = alloca i8
call void @llvm.lifetime.start.p0i8 ( i64 1 , i8 * %n )
br label %exit
while.body:
%call = call i1 @bad_gep_helper1 ( i8 * %n , i8 * %ptr , i8 * %m )
br i1 %call , label %if.then , label %if.end
if.then:
%0 = load i8 , i8 * %ptr
call void @bad_gep_helper2 ( i8 %0 )
br label %if.end
if.end:
%ptr = getelementptr inbounds i8 , i8 * %ptr , i64 1
%cmp = icmp eq i8 * %ptr , @p
br i1 %cmp , label %exit , label %while.body
exit:
call void @llvm.lifetime.end.p0i8 ( i64 1 , i8 * %n )
ret void
}
declare i1 @bad_gep_helper1 ( i8 * , i8 * , i8 * )
declare void @bad_gep_helper2 ( i8 )
declare void @llvm.lifetime.start.p0i8 ( i64 %0 , i8 * %1 )
declare void @llvm.lifetime.end.p0i8 ( i64 %0 , i8 * %1 )
2021-03-12 06:21:32 +01:00
;.
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM: attributes #[[ATTR0]] = { nofree noreturn nosync nounwind }
; NOT_CGSCC_NPM: attributes #[[ATTR1:[0-9]+]] = { readnone }
; NOT_CGSCC_NPM: attributes #[[ATTR2]] = { nounwind }
; NOT_CGSCC_NPM: attributes #[[ATTR3]] = { noreturn nounwind }
; NOT_CGSCC_NPM: attributes #[[ATTR4]] = { noreturn }
; NOT_CGSCC_NPM: attributes #[[ATTR5]] = { nosync readnone }
; NOT_CGSCC_NPM: attributes #[[ATTR6]] = { argmemonly nofree norecurse nounwind uwtable willreturn }
; NOT_CGSCC_NPM: attributes #[[ATTR7]] = { nosync }
2021-07-16 01:24:58 +02:00
; NOT_CGSCC_NPM: attributes #[[ATTR8:[0-9]+]] = { argmemonly nofree nosync nounwind willreturn writeonly }
2021-02-22 21:38:23 +01:00
; NOT_CGSCC_NPM: attributes #[[ATTR9]] = { nofree noreturn nosync nounwind readnone }
; NOT_CGSCC_NPM: attributes #[[ATTR10]] = { nofree noreturn nosync nounwind readnone willreturn }
; NOT_CGSCC_NPM: attributes #[[ATTR11]] = { nofree nosync nounwind willreturn }
; NOT_CGSCC_NPM: attributes #[[ATTR12]] = { nofree nosync nounwind readnone willreturn }
; NOT_CGSCC_NPM: attributes #[[ATTR13:[0-9]+]] = { argmemonly nofree nosync nounwind willreturn }
; NOT_CGSCC_NPM: attributes #[[ATTR14]] = { nounwind willreturn }
; NOT_CGSCC_NPM: attributes #[[ATTR15]] = { willreturn }
;.
; IS__CGSCC____: attributes #[[ATTR0]] = { nofree noreturn nosync nounwind }
; IS__CGSCC____: attributes #[[ATTR1:[0-9]+]] = { readnone }
; IS__CGSCC____: attributes #[[ATTR2]] = { nounwind }
; IS__CGSCC____: attributes #[[ATTR3]] = { noreturn nounwind }
; IS__CGSCC____: attributes #[[ATTR4]] = { noreturn }
; IS__CGSCC____: attributes #[[ATTR5]] = { nosync readnone }
; IS__CGSCC____: attributes #[[ATTR6]] = { nofree norecurse nosync nounwind readnone willreturn }
; IS__CGSCC____: attributes #[[ATTR7]] = { argmemonly nofree norecurse nounwind uwtable willreturn }
; IS__CGSCC____: attributes #[[ATTR8]] = { nofree norecurse nosync nounwind readnone uwtable willreturn }
; IS__CGSCC____: attributes #[[ATTR9]] = { nosync }
; IS__CGSCC____: attributes #[[ATTR10]] = { argmemonly nofree norecurse nosync nounwind willreturn writeonly }
; IS__CGSCC____: attributes #[[ATTR11]] = { nofree norecurse noreturn nosync nounwind readnone }
; IS__CGSCC____: attributes #[[ATTR12]] = { nofree norecurse noreturn nosync nounwind readnone willreturn }
; IS__CGSCC____: attributes #[[ATTR13]] = { nofree nosync nounwind willreturn }
; IS__CGSCC____: attributes #[[ATTR14]] = { nofree norecurse nosync nounwind readnone }
; IS__CGSCC____: attributes #[[ATTR15]] = { nofree nosync nounwind readnone willreturn }
; IS__CGSCC____: attributes #[[ATTR16:[0-9]+]] = { argmemonly nofree nosync nounwind willreturn }
; IS__CGSCC____: attributes #[[ATTR17]] = { nounwind willreturn }
; IS__CGSCC____: attributes #[[ATTR18]] = { willreturn }
2021-03-12 06:21:32 +01:00
;.