DavidSpickett added inline comments.
================ Comment at: llvm/lib/Target/ARM/ARMInstrThumb2.td:5745 + IIC_Br, [(ARMt2CallBTI tglobaladdr:$func)]>, + Requires<[IsThumb2]>, Sched<[WriteBrL]>; ---------------- DavidSpickett wrote: > chill wrote: > > DavidSpickett wrote: > > > Should this require `IsMClass` instead/also? Though I wasn't able to get > > > anything weird to happen when using an A profile triple so maybe I'm > > > missing a check elsewhere that means you'd never get to this point with A > > > profile Arm. > > > > > > For example this A profile triple: > > > ``` > > > $ ./bin/clang --target=thumbv8-arm-none-eabi /tmp/test.c -o /tmp/test.o > > > -o - -S -mbranch-protection=bti -mthumb > > > ``` > > > > > > Doesn't put anything after a call to `setjmp`, nop or otherwise, but I > > > can't place where that decision is made. > > The decision is made in ARMMachineFunctionInfo > > > > https://github.com/llvm/llvm-project/blob/a02af37560ff5aa22dcef5735ef25eaf58eaaf64/llvm/lib/Target/ARM/ARMMachineFunctionInfo.cpp#L18 > Never mind, I figured it out as per usual just after leaving the comment. > > ``` > static bool GetBranchTargetEnforcement(MachineFunction &MF) { > const auto &Subtarget = MF.getSubtarget<ARMSubtarget>(); > if (!Subtarget.isMClass() || !Subtarget.hasV7Ops()) > return false; > ``` > > This returns false for the A profile which means that GuardWithBTI is false > so we don't add a BTI. Maybe one could craft some IR example that got around > that but doesn't seem a likely issue. > The decision is made in ARMMachineFunctionInfo Left my comment just as you did. Thanks! I see how it works now. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112427/new/ https://reviews.llvm.org/D112427 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits