@@ -1516,13 +1516,15 @@ struct AAPointerInfoCallSiteArgument final : AAPointerInfoFloating {
1516
1516
AAPointerInfoCallSiteArgument (const IRPosition &IRP, Attributor &A)
1517
1517
: AAPointerInfoFloating(IRP, A) {}
1518
1518
1519
- // / See AbstractAttribute::updateImpl(...).
1520
- ChangeStatus updateImpl (Attributor &A) override {
1521
- using namespace AA ::PointerInfo;
1519
+ // / See AbstractAttribute::initialize(...).
1520
+ void initialize (Attributor &A) override {
1521
+ AAPointerInfoFloating::initialize (A);
1522
+
1522
1523
// We handle memory intrinsics explicitly, at least the first (=
1523
1524
// destination) and second (=source) arguments as we know how they are
1524
1525
// accessed.
1525
1526
if (auto *MI = dyn_cast_or_null<MemIntrinsic>(getCtxI ())) {
1527
+ // TODO: Simplify the length.
1526
1528
ConstantInt *Length = dyn_cast<ConstantInt>(MI->getLength ());
1527
1529
int64_t LengthVal = AA::OffsetAndSize::Unknown;
1528
1530
if (Length)
@@ -1539,16 +1541,22 @@ struct AAPointerInfoCallSiteArgument final : AAPointerInfoFloating {
1539
1541
} else {
1540
1542
LLVM_DEBUG (dbgs () << " [AAPointerInfo] Unhandled memory intrinsic "
1541
1543
<< *MI << " \n " );
1542
- return indicatePessimisticFixpoint ();
1544
+ indicatePessimisticFixpoint ();
1543
1545
}
1544
1546
1547
+ indicateOptimisticFixpoint ();
1548
+
1545
1549
LLVM_DEBUG ({
1546
- dbgs () << " Accesses by bin after update :\n " ;
1550
+ dbgs () << " Accesses by bin after initialization :\n " ;
1547
1551
dumpState (dbgs ());
1548
1552
});
1549
-
1550
- return Changed;
1553
+ return ;
1551
1554
}
1555
+ }
1556
+
1557
+ // / See AbstractAttribute::updateImpl(...).
1558
+ ChangeStatus updateImpl (Attributor &A) override {
1559
+ using namespace AA ::PointerInfo;
1552
1560
1553
1561
// TODO: Once we have call site specific value information we can provide
1554
1562
// call site specific liveness information and then it makes
0 commit comments