https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81979
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target|powerpcspe-*-linux-gnu* |powerpc-*-linux-gnu*, | |powerpcspe-*-linux-gnu* CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- It fails even on powerpc64-linux-gnu with -m32 -fPIC -O2 -freorder-blocks-and-partition, so no, it hasn't been fixed. The problem is that the .LCLn and .LCFn labels have to be emitted in the same section; the .LCLn label is emitted in the .text section by rs6000_elf_declare_function_name (or is it generally in the section in which the function starts?), but the corresponding .LCFn label is emitted by the load_toc_v4_PIC_1_normal instruction. So, I'd say uses_TOC should return 2 instead of 1 if while looking for UNSPEC_TOC instruction it crossed a NOTE_INSN_SWITCH_TEXT_SECTIONS and the caller should deal with that. Let me try that.