[llvm-dev] Issues with new Attributor (replaceAllUses fails with type mismatch) (original) (raw)

Mani, Suresh via llvm-dev llvm-dev at lists.llvm.org
Mon May 18 02:31:25 PDT 2020


[AMD Public Use]

Hi Johannes,

I took the latest llvm code now and the issue got resolved.

Thanks M Suresh

From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of Mani, Suresh via llvm-dev Sent: Monday, May 18, 2020 1:09 PM To: Johannes Doerfert <johannesdoerfert at gmail.com>; llvm-dev at lists.llvm.org Subject: Re: [llvm-dev] Issues with new Attributor (replaceAllUses fails with type mismatch)

[CAUTION: External Email]

[AMD Public Use]

Hi Johannes,

This fix (8d94d3c3b44c3a27a69b153cef9be4b8e481150e) does not seem the resolve the issue and the problem still persists.

Regards, M Suresh

From: Johannes Doerfert <johannesdoerfert at gmail.com<mailto:johannesdoerfert at gmail.com>> Sent: Saturday, May 16, 2020 4:42 AM To: Mani, Suresh <Suresh.Mani at amd.com<mailto:Suresh.Mani at amd.com>>; llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org> Subject: Re: [llvm-dev] Issues with new Attributor (replaceAllUses fails with type mismatch)

[CAUTION: External Email]

Hi Suresh,

thanks for reporting this!

I thought I fixed this with 8d94d3c3b44c3a27a69b153cef9be4b8e481150e.

Did you run before or after that commit?

Cheers,

Johannes

On 5/15/20 7:17 AM, Mani, Suresh via llvm-dev wrote:

[AMD Public Use]

Hi ,

Please ignore the earlier header of Internal and Official use only.

Thanks

M Suresh

From: llvm-dev <llvm-dev-bounces at lists.llvm.org><mailto:llvm-dev-bounces at lists.llvm.org> On Behalf Of Mani, Suresh via llvm-dev

Sent: Friday, May 15, 2020 4:37 PM

To: llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>

Subject: [llvm-dev] Issues with new Attributor (replaceAllUses fails with type mismatch)

[CAUTION: External Email]

[AMD Official Use Only - Internal Distribution Only]

Hi ,

There seems to be some issue with attributor, exactly in File Attributor.cpp, Function Attributor::rewriteFunctionSignatures(), Line No: 1600 (approrimate).

The llvm source code at above address is as follows:

// Eliminate the instructions *after* we visited all of them.

for (auto &CallSitePair : CallSitePairs) {

  CallBase &OldCB = *CallSitePair.first;

  CallBase &NewCB = *CallSitePair.second;

  ModifiedFns.insert(OldCB.getFunction());

  CGUpdater.replaceCallSite(OldCB, NewCB);

  OldCB.replaceAllUsesWith(&NewCB);   <---------------------------------------- Failing location

  OldCB.eraseFromParent();

}

Failure symptom:

Assertion failed: New->getType() == getType() && "replaceAllUses of value with new value of different type!"

Snaps for IR from failing llvm IR and debug info while debugging is as follows:

Sample situation1:

Original code in IR -- %133 = call i32 (i32, ...) bitcast (void (i32)* @set_yydebug to i32 (i32, ...)*)(i32 1) #21

Attribute info ---- attributes #21 = { nounwind }

Debug info:

OldCB-------------------- %133 = call i32 (i32, ...) bitcast (void (i32)* @0 to i32 (i32, ...)*)(i32 1) #27

NewCB-------------------- call void @set_yydebug() #27

OldCB.replaceAllUsesWith(&NewCB); fails because of a type mismatch b/w OldCB (i32) and NewCB (void) .


Sample situation 2:

Original code in IR -- %63 = tail call %struct.cv* bitcast (%struct.cv.231* (i8, i64, i32*)* @Perl_find_runcv_where to %struct.cv* (i8, i64, i32*))(i8 zeroext 1, i64 %62, i32 null) #14

Attribute info ---- attributes #14 = { nounwind }

Debug info:

OldCB --- %63 = tail call %struct.cv.231* @Perl_find_runcv_where(i8 zeroext 1, i64 %62) #14

NewCB ---%64 = tail call %struct.cv* bitcast (%struct.cv.231* (i8, i64, i32*)* @15 to %struct.cv* (i8, i64, i32*))(i8 zeroext 1, i64 %62, i32 noalias align 536870912 null) #14

And hence OldCB.replaceAllUsesWith(&NewCB); fails


The complete IR file is very huge, and had no luck in getting a reduced test case.

Thanks

M Suresh


LLVM Developers mailing list

llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>

https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fllvm-dev&data=02%7C01%7CSuresh.Mani%40amd.com%7Cd4cdbdbb0c2c4270067508d7fafe9287%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637253843596533796&sdata=W57Y5UXf2uKqX4OpANNxiV1Mv9ArtYxnxPkFjSUbS90%3D&reserved=0> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200518/f2153e0b/attachment.html>



More information about the llvm-dev mailing list