Thread (103 messages) 103 messages, 16 authors, 2017-12-04

[PATCH v2 11/18] arm64: make mrs_s and msr_s macros work with LTO

From: Segher Boessenkool <hidden>
Date: 2017-11-16 17:10:02
Also in: linux-kbuild, lkml

On Thu, Nov 16, 2017 at 08:46:08AM -0800, Sami Tolvanen wrote:
On Thu, Nov 16, 2017 at 07:56:50AM -0600, Segher Boessenkool wrote:
quoted
The compiler is fine, the assembler is fine (and the linker has
nothing to do with it).  Your code is not fine.
Would you care to elaborate? The current code assumes that macros are
visible in other inline assembly blocks, and LLVM developers seem to
feel this isn't correct behavior. This patch fixes the current code so
it works with both assemblers.
If you say e.g.

void f(void)
{
	asm(".macro something\n\t.endm");
}

there is nothing that prevents the compiler from emitting this more
than once.  Expecting things to be emitted in whatever order is a bad
idea, too.

The thing with .purgem can work.  Inelegant, sure, but it can work :-)
Just make sure you do the macro define, the code that uses it, and the
undefine, all in the same inline asm statement.


Segher
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help