This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix target/61336 -- alpha ice on questionable asm

The scheme that alpha uses to split symbolic references into trackable pairs of
relocations doesn't really handle asms.  Of course, normal asms don't have the
problem seen here because they're interested in producing instructions, whereas
this case is system tap creating some annotations.

The most important part of the patch is the call to output_operand_lossage,
which eliminates the ICE.

The rest of the patch is somewhat debatable.  It certainly "works" for the
given test case, in that the assembly hunk is producing string data.  But I
doubt that system tap has actually been ported to alpha, so whether it "works"
in the more specific sense of doing the right thing, I have no idea.

In order to more "properly" handle symbolic references in asms, we'd probably
have to write a dedicated pass rather than rely on post-reload splitting.
Which is more of a viable option now than in olden times.  But "properly" in
this particular case would almost certainly *not* work for system tap, since it
would result in a weird symbol+reloc string that I'm certain would not be
handled properly by system tap.


Attachment: z
Description: Text document

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]