|
4 | 4 | ; devirtualization here with GVN which forwards a store through a load and to
|
5 | 5 | ; an indirect call.
|
6 | 6 | ;
|
7 |
| -; RUN: opt -aa-pipeline=basic-aa -passes='cgscc(function-attrs,function(gvn,instcombine))' -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=BEFORE |
8 |
| -; RUN: opt -aa-pipeline=basic-aa -passes='cgscc(devirt<1>(function-attrs,function(gvn,instcombine)))' -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=AFTER --check-prefix=AFTER1 |
9 |
| -; RUN: opt -aa-pipeline=basic-aa -passes='cgscc(devirt<2>(function-attrs,function(gvn,instcombine)))' -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=AFTER --check-prefix=AFTER2 |
| 7 | +; RUN: opt -aa-pipeline=basic-aa -passes='module(inferattrs),cgscc(function-attrs,function(gvn,instcombine))' -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=BEFORE |
| 8 | +; RUN: opt -aa-pipeline=basic-aa -passes='module(inferattrs),cgscc(devirt<1>(function-attrs,function(gvn,instcombine)))' -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=AFTER --check-prefix=AFTER1 |
| 9 | +; RUN: opt -aa-pipeline=basic-aa -passes='module(inferattrs),cgscc(devirt<2>(function-attrs,function(gvn,instcombine)))' -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=AFTER --check-prefix=AFTER2 |
10 | 10 | ;
|
11 |
| -; RUN: not --crash opt -abort-on-max-devirt-iterations-reached -aa-pipeline=basic-aa -passes='cgscc(devirt<1>(function-attrs,function(gvn,instcombine)))' -S < %s |
12 |
| -; RUN: opt -abort-on-max-devirt-iterations-reached -aa-pipeline=basic-aa -passes='cgscc(devirt<2>(function-attrs,function(gvn,instcombine)))' -S < %s |
| 11 | +; RUN: not --crash opt -abort-on-max-devirt-iterations-reached -aa-pipeline=basic-aa -passes='module(inferattrs),cgscc(devirt<1>(function-attrs,function(gvn,instcombine)))' -S < %s |
| 12 | +; RUN: opt -abort-on-max-devirt-iterations-reached -aa-pipeline=basic-aa -passes='module(inferattrs),cgscc(devirt<2>(function-attrs,function(gvn,instcombine)))' -S < %s |
13 | 13 | ;
|
14 | 14 | ; We also verify that the real O2 pipeline catches these cases.
|
15 | 15 | ; RUN: opt -aa-pipeline=basic-aa -passes='default<O2>' -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=AFTER --check-prefix=AFTER2
|
16 | 16 |
|
17 | 17 | declare void @readnone() readnone
|
18 |
| -; CHECK: Function Attrs: readnone |
| 18 | +; CHECK: Function Attrs: nofree nosync readnone |
19 | 19 | ; CHECK-NEXT: declare void @readnone()
|
20 | 20 |
|
21 | 21 | declare void @unknown()
|
|
51 | 51 | ; devirtualize again, and then deduce readnone.
|
52 | 52 |
|
53 | 53 | declare void @readnone_with_arg(void ()**) readnone
|
54 |
| -; CHECK: Function Attrs: readnone |
| 54 | +; CHECK: Function Attrs: nofree nosync readnone |
55 | 55 | ; CHECK-LABEL: declare void @readnone_with_arg(void ()**)
|
56 | 56 |
|
57 | 57 | define void @test2_a(void ()** %ignore) {
|
|
0 commit comments