Summary: | Dividing zero by a uniform in loop header causes segfault in nv50_ir::NVC0LegalizeSSA::handleDIV | ||
---|---|---|---|
Product: | Mesa | Reporter: | Abel Briggs <abelbriggs1> |
Component: | Drivers/DRI/nouveau | Assignee: | Nouveau Project <nouveau> |
Status: | RESOLVED MOVED | QA Contact: | Nouveau Project <nouveau> |
Severity: | minor | ||
Priority: | medium | CC: | mmgrqnv |
Version: | git | ||
Hardware: | x86-64 (AMD64) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: | Reproduction shader_test file, core dump of crash |
Description
Abel Briggs
2019-07-18 15:38:38 UTC
Right... Instruction *ld = i->getSrc(s)->getInsn(); assert(ld->getSrc(0) != NULL); We must end up propagating the zero imm directly into DIV's args. This is generally legal even for ops that don't allow imms because of the RZ thing. However in this case ... it screws things up, since we have to move the value to a fixed reg. It looks like the assert() is just misplaced there. It should go into the "else" clause below and all will be well... we handle the "!ld" / "ld is not a load/mov" cases already just fine. *** Bug 111218 has been marked as a duplicate of this bug. *** -- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/1187. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.