Skip to content

Commit 1ee686a

Browse files
committed
Revert "[FunctionAttrs] Determine underlying object by getUnderlyingObjectAggressive (llvm#100102)"
This reverts commit a213edd. Assertion failures on buildbots.
1 parent a213edd commit 1ee686a

File tree

2 files changed

+1
-125
lines changed

2 files changed

+1
-125
lines changed

llvm/lib/Transforms/IPO/FunctionAttrs.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ static void addLocAccess(MemoryEffects &ME, const MemoryLocation &Loc,
118118
if (isNoModRef(MR))
119119
return;
120120

121-
const Value *UO = getUnderlyingObjectAggressive(Loc.Ptr);
121+
const Value *UO = getUnderlyingObject(Loc.Ptr);
122122
assert(!isa<AllocaInst>(UO) &&
123123
"Should have been handled by getModRefInfoMask()");
124124
if (isa<Argument>(UO)) {

llvm/test/Transforms/FunctionAttrs/argmemonly.ll

-124
Original file line numberDiff line numberDiff line change
@@ -489,127 +489,3 @@ define void @test_scc_argmem_read_2(ptr %p) {
489489
call void @test_scc_argmem_read_1(ptr %p)
490490
ret void
491491
}
492-
493-
define i64 @select_same_obj(i1 %c, ptr %p, i64 %x) {
494-
; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read)
495-
; FNATTRS-LABEL: define i64 @select_same_obj
496-
; FNATTRS-SAME: (i1 [[C:%.*]], ptr nocapture readonly [[P:%.*]], i64 [[X:%.*]]) #[[ATTR1]] {
497-
; FNATTRS-NEXT: entry:
498-
; FNATTRS-NEXT: [[P2:%.*]] = getelementptr i8, ptr [[P]], i64 [[X]]
499-
; FNATTRS-NEXT: [[P3:%.*]] = select i1 [[C]], ptr [[P]], ptr [[P2]]
500-
; FNATTRS-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
501-
; FNATTRS-NEXT: ret i64 [[R]]
502-
;
503-
; ATTRIBUTOR: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
504-
; ATTRIBUTOR-LABEL: define i64 @select_same_obj
505-
; ATTRIBUTOR-SAME: (i1 [[C:%.*]], ptr nocapture nofree readonly [[P:%.*]], i64 [[X:%.*]]) #[[ATTR0]] {
506-
; ATTRIBUTOR-NEXT: entry:
507-
; ATTRIBUTOR-NEXT: [[P2:%.*]] = getelementptr i8, ptr [[P]], i64 [[X]]
508-
; ATTRIBUTOR-NEXT: [[P3:%.*]] = select i1 [[C]], ptr [[P]], ptr [[P2]]
509-
; ATTRIBUTOR-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
510-
; ATTRIBUTOR-NEXT: ret i64 [[R]]
511-
;
512-
entry:
513-
%p2 = getelementptr i8, ptr %p, i64 %x
514-
%p3 = select i1 %c, ptr %p, ptr %p2
515-
%r = load i64, ptr %p3
516-
ret i64 %r
517-
}
518-
519-
; FIXME: This could be `memory(argmem: read)`.
520-
define i64 @select_different_obj(i1 %c, ptr %p, ptr %p2) {
521-
; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none)
522-
; FNATTRS-LABEL: define i64 @select_different_obj
523-
; FNATTRS-SAME: (i1 [[C:%.*]], ptr nocapture readonly [[P:%.*]], ptr nocapture readonly [[P2:%.*]]) #[[ATTR3]] {
524-
; FNATTRS-NEXT: entry:
525-
; FNATTRS-NEXT: [[P3:%.*]] = select i1 [[C]], ptr [[P]], ptr [[P2]]
526-
; FNATTRS-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
527-
; FNATTRS-NEXT: ret i64 [[R]]
528-
;
529-
; ATTRIBUTOR: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
530-
; ATTRIBUTOR-LABEL: define i64 @select_different_obj
531-
; ATTRIBUTOR-SAME: (i1 [[C:%.*]], ptr nocapture nofree readonly [[P:%.*]], ptr nocapture nofree readonly [[P2:%.*]]) #[[ATTR0]] {
532-
; ATTRIBUTOR-NEXT: entry:
533-
; ATTRIBUTOR-NEXT: [[P3:%.*]] = select i1 [[C]], ptr [[P]], ptr [[P2]]
534-
; ATTRIBUTOR-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
535-
; ATTRIBUTOR-NEXT: ret i64 [[R]]
536-
;
537-
entry:
538-
%p3 = select i1 %c, ptr %p, ptr %p2
539-
%r = load i64, ptr %p3
540-
ret i64 %r
541-
}
542-
543-
define i64 @phi_same_obj(i1 %c, ptr %p, i64 %x) {
544-
; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read)
545-
; FNATTRS-LABEL: define i64 @phi_same_obj
546-
; FNATTRS-SAME: (i1 [[C:%.*]], ptr nocapture readonly [[P:%.*]], i64 [[X:%.*]]) #[[ATTR1]] {
547-
; FNATTRS-NEXT: entry:
548-
; FNATTRS-NEXT: [[P2:%.*]] = getelementptr i8, ptr [[P]], i64 [[X]]
549-
; FNATTRS-NEXT: br i1 [[C]], label [[IF:%.*]], label [[JOIN:%.*]]
550-
; FNATTRS: if:
551-
; FNATTRS-NEXT: br label [[JOIN]]
552-
; FNATTRS: join:
553-
; FNATTRS-NEXT: [[P3:%.*]] = phi ptr [ [[P]], [[IF]] ], [ [[P2]], [[ENTRY:%.*]] ]
554-
; FNATTRS-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
555-
; FNATTRS-NEXT: ret i64 [[R]]
556-
;
557-
; ATTRIBUTOR: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read)
558-
; ATTRIBUTOR-LABEL: define i64 @phi_same_obj
559-
; ATTRIBUTOR-SAME: (i1 [[C:%.*]], ptr nocapture nofree readonly [[P:%.*]], i64 [[X:%.*]]) #[[ATTR1]] {
560-
; ATTRIBUTOR-NEXT: entry:
561-
; ATTRIBUTOR-NEXT: [[P2:%.*]] = getelementptr i8, ptr [[P]], i64 [[X]]
562-
; ATTRIBUTOR-NEXT: br i1 [[C]], label [[IF:%.*]], label [[JOIN:%.*]]
563-
; ATTRIBUTOR: if:
564-
; ATTRIBUTOR-NEXT: br label [[JOIN]]
565-
; ATTRIBUTOR: join:
566-
; ATTRIBUTOR-NEXT: [[P3:%.*]] = phi ptr [ [[P]], [[IF]] ], [ [[P2]], [[ENTRY:%.*]] ]
567-
; ATTRIBUTOR-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
568-
; ATTRIBUTOR-NEXT: ret i64 [[R]]
569-
;
570-
entry:
571-
%p2 = getelementptr i8, ptr %p, i64 %x
572-
br i1 %c, label %if, label %join
573-
if:
574-
br label %join
575-
join:
576-
%p3 = phi ptr [ %p, %if ], [ %p2, %entry ]
577-
%r = load i64, ptr %p3
578-
ret i64 %r
579-
}
580-
581-
; FIXME: This could be `memory(argmem: read)`.
582-
define i64 @phi_different_obj(i1 %c, ptr %p, ptr %p2) {
583-
; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none)
584-
; FNATTRS-LABEL: define i64 @phi_different_obj
585-
; FNATTRS-SAME: (i1 [[C:%.*]], ptr nocapture readonly [[P:%.*]], ptr nocapture readonly [[P2:%.*]]) #[[ATTR3]] {
586-
; FNATTRS-NEXT: entry:
587-
; FNATTRS-NEXT: br i1 [[C]], label [[IF:%.*]], label [[JOIN:%.*]]
588-
; FNATTRS: if:
589-
; FNATTRS-NEXT: br label [[JOIN]]
590-
; FNATTRS: join:
591-
; FNATTRS-NEXT: [[P3:%.*]] = phi ptr [ [[P]], [[IF]] ], [ [[P2]], [[ENTRY:%.*]] ]
592-
; FNATTRS-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
593-
; FNATTRS-NEXT: ret i64 [[R]]
594-
;
595-
; ATTRIBUTOR: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read)
596-
; ATTRIBUTOR-LABEL: define i64 @phi_different_obj
597-
; ATTRIBUTOR-SAME: (i1 [[C:%.*]], ptr nocapture nofree readonly [[P:%.*]], ptr nocapture nofree readonly [[P2:%.*]]) #[[ATTR1]] {
598-
; ATTRIBUTOR-NEXT: entry:
599-
; ATTRIBUTOR-NEXT: br i1 [[C]], label [[IF:%.*]], label [[JOIN:%.*]]
600-
; ATTRIBUTOR: if:
601-
; ATTRIBUTOR-NEXT: br label [[JOIN]]
602-
; ATTRIBUTOR: join:
603-
; ATTRIBUTOR-NEXT: [[P3:%.*]] = phi ptr [ [[P]], [[IF]] ], [ [[P2]], [[ENTRY:%.*]] ]
604-
; ATTRIBUTOR-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
605-
; ATTRIBUTOR-NEXT: ret i64 [[R]]
606-
;
607-
entry:
608-
br i1 %c, label %if, label %join
609-
if:
610-
br label %join
611-
join:
612-
%p3 = phi ptr [ %p, %if ], [ %p2, %entry ]
613-
%r = load i64, ptr %p3
614-
ret i64 %r
615-
}

0 commit comments

Comments
 (0)