Skip to content

clang's integrated assembler doesn't permit setting -Wa,-mimplicit-it=always for ARM #48367

@nickdesaulniers

Description

@nickdesaulniers
Bugzilla Link 49023
Resolution FIXED
Resolved on Feb 11, 2021 10:57
Version trunk
OS All
Blocks #4440
CC @arndb,@jcai19,@DavidSpickett,@kbeyls,@lalozano,@zygoloid,@stephenhines

Extended Description

While it seems we can use the internal flag -mllvm --arm-implicit-it=always, it would be good to support the more canonical -Wa,-mimplicit-it=always form as well. This is used by the Linux kernel when building a 32b THUMB2 image.

Otherwise, clang will fail when using the integrated assembler for inline asm, example:

In file included from arch/arm/mach-imx/pm-imx6.c:19:
In file included from ./include/linux/suspend.h:5:
In file included from ./include/linux/swap.h:9:
In file included from ./include/linux/memcontrol.h:13:
In file included from ./include/linux/cgroup.h:28:
In file included from ./include/linux/cgroup-defs.h:22:
In file included from ./include/linux/bpf-cgroup.h:5:
In file included from ./include/linux/bpf.h:21:
In file included from ./include/linux/kallsyms.h:12:
In file included from ./include/linux/mm.h:33:
In file included from ./include/linux/pgtable.h:6:
In file included from ./arch/arm/include/asm/pgtable.h:25:
./arch/arm/include/asm/tlbflush.h:342:2: error: predicated instructions must be in IT block
tlb_op(TLB_V7_UIS_FULL, "c8, c7, 0", zero);
^
./arch/arm/include/asm/tlbflush.h:320:30: note: expanded from macro 'tlb_op'
#define tlb_op(f, regs, arg) __tlb_op(f, "p15, 0, %0, " regs, arg)
^
./arch/arm/include/asm/tlbflush.h:314:21: note: expanded from macro '__tlb_op'
asm("tst %1, %2\n\t"
^
:2:2: note: instantiated into assembly here
mcrne p15, 0, r2, c8, c7, 0
^

Metadata

Metadata

Labels

bugzillaIssues migrated from bugzillaclangClang issues not falling into any other category

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions