Skip to content

ICE in debug generation with match guard. #34569

Closed
@meh

Description

@meh

This is the full project that causes that failure, make sure to use that commit.

The culprit line is here.

Inside a match:

e if display.randr.as_ref().map_or(false, |rr| e == rr.event(xrandr::RRScreenChangeNotify))

Results in:

!dbg attachment points at wrong subprogram for function
!21995 = distinct !DISubprogram(name: "{{closure}}", linkageName: "_ZN12screenruster6locker8{{impl}}5spawn11{{closure}}11{{closure}}E", scope: !21991, file: !352, line: 214, type: !21992, isLocal: true, isDefinition: true, scopeLine: 214, flags: DIFlagPrototyped, isOptimized: false, templateParams: !457, variables: !457)
i1 (i8*, %"locker::display::Extension"*)* @"_ZN12screenruster6locker6Locker5spawn28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hb41874d5593ec665E"
  call void @llvm.dbg.declare(metadata %closure.114** %__debuginfo_env_ptr, metadata !59153, metadata !59154), !dbg !59155
!59155 = !DILocation(line: 214, scope: !21990)
!21990 = distinct !DISubprogram(name: "{{closure}}", linkageName: "_ZN12screenruster6locker8{{impl}}5spawn11{{closure}}11{{closure}}E", scope: !21991, file: !352, line: 214, type: !21992, isLocal: true, isDefinition: true, scopeLine: 214, flags: DIFlagPrototyped, isOptimized: false, templateParams: !457, variables: !457)
!21990 = distinct !DISubprogram(name: "{{closure}}", linkageName: "_ZN12screenruster6locker8{{impl}}5spawn11{{closure}}11{{closure}}E", scope: !21991, file: !352, line: 214, type: !21992, isLocal: true, isDefinition: true, scopeLine: 214, flags: DIFlagPrototyped, isOptimized: false, templateParams: !457, variables: !457)
LLVM ERROR: Broken function found, compilation aborted!

If I change that to:

e if e == display.randr.as_ref().map_or(0, |rr| rr.event(xrandr::RRScreenChangeNotify))

Then it compiles.

I tried to come up with a reduced test case but failed, so sorry for the full project as test case.

Metadata

Metadata

Labels

T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.regression-from-stable-to-betaPerformance or correctness regression from stable to beta.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions