| Summary: | gcc-4.7 ICE while compiling LLVM | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Karsten Hopp <karsten> | ||||||
| Component: | gcc | Assignee: | Jakub Jelinek <jakub> | ||||||
| Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||||
| Severity: | high | Docs Contact: | |||||||
| Priority: | high | ||||||||
| Version: | rawhide | CC: | bergner, jakub | ||||||
| Target Milestone: | --- | ||||||||
| Target Release: | --- | ||||||||
| Hardware: | powerpc | ||||||||
| OS: | Linux | ||||||||
| Whiteboard: | |||||||||
| Fixed In Version: | gcc-4.7.0-0.9.fc17 | Doc Type: | Bug Fix | ||||||
| Doc Text: | Story Points: | --- | |||||||
| Clone Of: | Environment: | ||||||||
| Last Closed: | 2012-01-24 07:42:34 UTC | Type: | --- | ||||||
| Regression: | --- | Mount Type: | --- | ||||||
| Documentation: | --- | CRM: | |||||||
| Verified Versions: | Category: | --- | |||||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||||
| Attachments: |
|
||||||||
|
Description
Karsten Hopp
2012-01-18 18:19:43 UTC
Created attachment 556089 [details]
preprocessed source
Confirmed and it ICE's with gcc mainline too. I'll have a closer look. Created attachment 556129 [details]
rh782868.ii
Slightly reduced testcase for -O2 -m64.
We ICE when we try and do a BLK move from a reg:TI. This seems to fix it:
Index: gcc/emit-rtl.c
===================================================================
--- gcc/emit-rtl.c (revision 183280)
+++ gcc/emit-rtl.c (working copy)
@@ -1401,6 +1401,9 @@ operand_subword (rtx op, unsigned int of
return replace_equiv_address (new_rtx, XEXP (new_rtx, 0));
}
+ if (REG_P (op) && mode == BLKmode)
+ mode = GET_MODE (op);
+
/* Rest can be handled by simplify_subreg. */
return simplify_gen_subreg (word_mode, op, mode, (offset * UNITS_PER_WORD));
}
In GCC 4.6, we don't go down this path, because we fail the load_register_parameters() test:
else if (TYPE_MODE (TREE_TYPE (args[i].tree_value)) == BLKmode)
I'll bootstrap/regtest the patch above.
|