https://github.com/mylai-mtk updated https://github.com/llvm/llvm-project/pull/109600
>From 93617b9aa7bdc9368de80b2595e37f0e8ed72c52 Mon Sep 17 00:00:00 2001 From: Ming-Yi Lai <ming-yi....@mediatek.com> Date: Fri, 10 May 2024 14:16:59 +0800 Subject: [PATCH 1/7] [clang][RISCV] Add Zicfilp CFI unlabeled scheme preprocessor macros + `#define __riscv_landing_pad 1` when any Zicfilp scheme is enabled + `#define __riscv_landing_pad_unlabeled 1` when the unlabeled Zicfilp scheme is enabled --- clang/lib/Basic/Targets/RISCV.cpp | 19 +++++ .../test/CodeGen/RISCV/riscv-cf-protection.c | 79 +++++++++++++++++++ 2 files changed, 98 insertions(+) diff --git a/clang/lib/Basic/Targets/RISCV.cpp b/clang/lib/Basic/Targets/RISCV.cpp index a1a2437f288a0..85d0610df974b 100644 --- a/clang/lib/Basic/Targets/RISCV.cpp +++ b/clang/lib/Basic/Targets/RISCV.cpp @@ -241,6 +241,25 @@ void RISCVTargetInfo::getTargetDefines(const LangOptions &Opts, if (Opts.CFProtectionReturn && ISAInfo->hasExtension("zicfiss")) Builder.defineMacro("__riscv_shadow_stack"); + + if (Opts.CFProtectionBranch) { + auto Scheme = Opts.getCFBranchLabelScheme(); + if (Scheme == CFBranchLabelSchemeKind::Default) + Scheme = getDefaultCFBranchLabelScheme(); + + Builder.defineMacro("__riscv_landing_pad", "1"); + switch (Scheme) { + case CFBranchLabelSchemeKind::Unlabeled: + Builder.defineMacro("__riscv_landing_pad_unlabeled", "1"); + break; + case CFBranchLabelSchemeKind::FuncSig: + Builder.defineMacro("__riscv_landing_pad_func_sig", "1"); + break; + case CFBranchLabelSchemeKind::Default: + llvm_unreachable("default cf-branch-label scheme should already be " + "transformed to other scheme"); + } + } } static constexpr int NumRVVBuiltins = diff --git a/clang/test/CodeGen/RISCV/riscv-cf-protection.c b/clang/test/CodeGen/RISCV/riscv-cf-protection.c index 3a9855a3d2f01..db7b65061658c 100644 --- a/clang/test/CodeGen/RISCV/riscv-cf-protection.c +++ b/clang/test/CodeGen/RISCV/riscv-cf-protection.c @@ -1,71 +1,143 @@ +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s + // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,UNLABELED-FLAG %s +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=func-sig -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,FUNC-SIG-FLAG %s +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=unlabeled -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck \ +// RUN: --check-prefixes=NO-MACRO,UNLABELED-SCHEME-UNUSED %s + // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=unlabeled -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,UNLABELED-SCHEME-UNUSED %s +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck \ +// RUN: --check-prefixes=NO-MACRO,FUNC-SIG-SCHEME-UNUSED %s + // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,FUNC-SIG-SCHEME-UNUSED %s +// RUN: %clang --target=riscv32 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=unlabeled -E -dM -emit-llvm %s -o - | \ +// RUN: FileCheck --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s + // RUN: %clang --target=riscv32 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,UNLABELED-FLAG %s +// RUN: %clang --target=riscv32 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + // RUN: %clang --target=riscv32 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=func-sig -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,FUNC-SIG-FLAG %s +// RUN: %clang --target=riscv32 -mcf-branch-label-scheme=unlabeled -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck \ +// RUN: --check-prefixes=NO-MACRO,UNLABELED-SCHEME-UNUSED %s + // RUN: %clang --target=riscv32 -mcf-branch-label-scheme=unlabeled -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,UNLABELED-SCHEME-UNUSED %s +// RUN: %clang --target=riscv32 -mcf-branch-label-scheme=func-sig -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck \ +// RUN: --check-prefixes=NO-MACRO,FUNC-SIG-SCHEME-UNUSED %s + // RUN: %clang --target=riscv32 -mcf-branch-label-scheme=func-sig -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,FUNC-SIG-SCHEME-UNUSED %s +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s + // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,UNLABELED-FLAG %s +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=func-sig -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,FUNC-SIG-FLAG %s +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=unlabeled -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck \ +// RUN: --check-prefixes=NO-MACRO,UNLABELED-SCHEME-UNUSED %s + // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=unlabeled -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,UNLABELED-SCHEME-UNUSED %s +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck \ +// RUN: --check-prefixes=NO-MACRO,FUNC-SIG-SCHEME-UNUSED %s + // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,FUNC-SIG-SCHEME-UNUSED %s +// RUN: %clang --target=riscv64 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s + // RUN: %clang --target=riscv64 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,UNLABELED-FLAG %s +// RUN: %clang --target=riscv64 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + // RUN: %clang --target=riscv64 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=func-sig -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,FUNC-SIG-FLAG %s +// RUN: %clang --target=riscv64 -mcf-branch-label-scheme=unlabeled -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck \ +// RUN: --check-prefixes=NO-MACRO,UNLABELED-SCHEME-UNUSED %s + // RUN: %clang --target=riscv64 -mcf-branch-label-scheme=unlabeled -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,UNLABELED-SCHEME-UNUSED %s +// RUN: %clang --target=riscv64 -mcf-branch-label-scheme=func-sig -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck \ +// RUN: --check-prefixes=NO-MACRO,FUNC-SIG-SCHEME-UNUSED %s + // RUN: %clang --target=riscv64 -mcf-branch-label-scheme=func-sig -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,FUNC-SIG-SCHEME-UNUSED %s @@ -83,6 +155,13 @@ // FUNC-SIG-SCHEME-UNUSED: warning: argument unused during compilation: // FUNC-SIG-SCHEME-UNUSED-SAME: '-mcf-branch-label-scheme=func-sig' +// LPAD-MACRO: __riscv_landing_pad 1{{$}} +// UNLABELED-MACRO: __riscv_landing_pad_unlabeled 1{{$}} +// FUNC-SIG-MACRO: __riscv_landing_pad_func_sig 1{{$}} +// NO-MACRO-NOT: __riscv_landing_pad +// NO-MACRO-NOT: __riscv_landing_pad_unlabeled +// NO-MACRO-NOT: __riscv_landing_pad_func_sig + // BRANCH-PROT-FLAG-DAG: [[P_FLAG:![0-9]+]] = !{i32 8, !"cf-protection-branch", i32 1} // UNLABELED-FLAG-DAG: [[S_FLAG:![0-9]+]] = !{i32 1, !"cf-branch-label-scheme", !"unlabeled"} // FUNC-SIG-FLAG-DAG: [[S_FLAG:![0-9]+]] = !{i32 1, !"cf-branch-label-scheme", !"func-sig"} >From b79b9cb984ba799629fbbafba607882b09afd0ad Mon Sep 17 00:00:00 2001 From: Ming-Yi Lai <ming-yi....@mediatek.com> Date: Mon, 17 Feb 2025 11:07:10 +0800 Subject: [PATCH 2/7] fixup: Remove redundant macro contents --- clang/lib/Basic/Targets/RISCV.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clang/lib/Basic/Targets/RISCV.cpp b/clang/lib/Basic/Targets/RISCV.cpp index 85d0610df974b..3c0c16303f7bc 100644 --- a/clang/lib/Basic/Targets/RISCV.cpp +++ b/clang/lib/Basic/Targets/RISCV.cpp @@ -247,13 +247,13 @@ void RISCVTargetInfo::getTargetDefines(const LangOptions &Opts, if (Scheme == CFBranchLabelSchemeKind::Default) Scheme = getDefaultCFBranchLabelScheme(); - Builder.defineMacro("__riscv_landing_pad", "1"); + Builder.defineMacro("__riscv_landing_pad"); switch (Scheme) { case CFBranchLabelSchemeKind::Unlabeled: - Builder.defineMacro("__riscv_landing_pad_unlabeled", "1"); + Builder.defineMacro("__riscv_landing_pad_unlabeled"); break; case CFBranchLabelSchemeKind::FuncSig: - Builder.defineMacro("__riscv_landing_pad_func_sig", "1"); + Builder.defineMacro("__riscv_landing_pad_func_sig"); break; case CFBranchLabelSchemeKind::Default: llvm_unreachable("default cf-branch-label scheme should already be " >From 0e9b50cc46d0123c2e70649b235087c8db9ed9c9 Mon Sep 17 00:00:00 2001 From: Ming-Yi Lai <ming-yi....@mediatek.com> Date: Mon, 17 Feb 2025 12:02:08 +0800 Subject: [PATCH 3/7] fixup: Move tests of macros from CodeGen dir to Preprocessor dir --- .../test/CodeGen/RISCV/riscv-cf-protection.c | 79 ------------------- clang/test/Preprocessor/riscv-cf-protection.c | 72 +++++++++++++++++ 2 files changed, 72 insertions(+), 79 deletions(-) create mode 100644 clang/test/Preprocessor/riscv-cf-protection.c diff --git a/clang/test/CodeGen/RISCV/riscv-cf-protection.c b/clang/test/CodeGen/RISCV/riscv-cf-protection.c index db7b65061658c..3a9855a3d2f01 100644 --- a/clang/test/CodeGen/RISCV/riscv-cf-protection.c +++ b/clang/test/CodeGen/RISCV/riscv-cf-protection.c @@ -1,143 +1,71 @@ -// RUN: %clang --target=riscv32 -menable-experimental-extensions \ -// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ -// RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s - // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,UNLABELED-FLAG %s -// RUN: %clang --target=riscv32 -menable-experimental-extensions \ -// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ -// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=func-sig -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,FUNC-SIG-FLAG %s -// RUN: %clang --target=riscv32 -menable-experimental-extensions \ -// RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=unlabeled -E -dM %s \ -// RUN: -o - 2>&1 | FileCheck \ -// RUN: --check-prefixes=NO-MACRO,UNLABELED-SCHEME-UNUSED %s - // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=unlabeled -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,UNLABELED-SCHEME-UNUSED %s -// RUN: %clang --target=riscv32 -menable-experimental-extensions \ -// RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -E -dM %s \ -// RUN: -o - 2>&1 | FileCheck \ -// RUN: --check-prefixes=NO-MACRO,FUNC-SIG-SCHEME-UNUSED %s - // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,FUNC-SIG-SCHEME-UNUSED %s -// RUN: %clang --target=riscv32 -fcf-protection=branch \ -// RUN: -mcf-branch-label-scheme=unlabeled -E -dM -emit-llvm %s -o - | \ -// RUN: FileCheck --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s - // RUN: %clang --target=riscv32 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,UNLABELED-FLAG %s -// RUN: %clang --target=riscv32 -fcf-protection=branch \ -// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv32 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=func-sig -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,FUNC-SIG-FLAG %s -// RUN: %clang --target=riscv32 -mcf-branch-label-scheme=unlabeled -E -dM %s \ -// RUN: -o - 2>&1 | FileCheck \ -// RUN: --check-prefixes=NO-MACRO,UNLABELED-SCHEME-UNUSED %s - // RUN: %clang --target=riscv32 -mcf-branch-label-scheme=unlabeled -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,UNLABELED-SCHEME-UNUSED %s -// RUN: %clang --target=riscv32 -mcf-branch-label-scheme=func-sig -E -dM %s \ -// RUN: -o - 2>&1 | FileCheck \ -// RUN: --check-prefixes=NO-MACRO,FUNC-SIG-SCHEME-UNUSED %s - // RUN: %clang --target=riscv32 -mcf-branch-label-scheme=func-sig -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,FUNC-SIG-SCHEME-UNUSED %s -// RUN: %clang --target=riscv64 -menable-experimental-extensions \ -// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ -// RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s - // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,UNLABELED-FLAG %s -// RUN: %clang --target=riscv64 -menable-experimental-extensions \ -// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ -// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=func-sig -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,FUNC-SIG-FLAG %s -// RUN: %clang --target=riscv64 -menable-experimental-extensions \ -// RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=unlabeled -E -dM %s \ -// RUN: -o - 2>&1 | FileCheck \ -// RUN: --check-prefixes=NO-MACRO,UNLABELED-SCHEME-UNUSED %s - // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=unlabeled -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,UNLABELED-SCHEME-UNUSED %s -// RUN: %clang --target=riscv64 -menable-experimental-extensions \ -// RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -E -dM %s \ -// RUN: -o - 2>&1 | FileCheck \ -// RUN: --check-prefixes=NO-MACRO,FUNC-SIG-SCHEME-UNUSED %s - // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,FUNC-SIG-SCHEME-UNUSED %s -// RUN: %clang --target=riscv64 -fcf-protection=branch \ -// RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s - // RUN: %clang --target=riscv64 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,UNLABELED-FLAG %s -// RUN: %clang --target=riscv64 -fcf-protection=branch \ -// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv64 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=func-sig -S -emit-llvm %s -o - | FileCheck \ // RUN: --check-prefixes=BRANCH-PROT-FLAG,FUNC-SIG-FLAG %s -// RUN: %clang --target=riscv64 -mcf-branch-label-scheme=unlabeled -E -dM %s \ -// RUN: -o - 2>&1 | FileCheck \ -// RUN: --check-prefixes=NO-MACRO,UNLABELED-SCHEME-UNUSED %s - // RUN: %clang --target=riscv64 -mcf-branch-label-scheme=unlabeled -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,UNLABELED-SCHEME-UNUSED %s -// RUN: %clang --target=riscv64 -mcf-branch-label-scheme=func-sig -E -dM %s \ -// RUN: -o - 2>&1 | FileCheck \ -// RUN: --check-prefixes=NO-MACRO,FUNC-SIG-SCHEME-UNUSED %s - // RUN: %clang --target=riscv64 -mcf-branch-label-scheme=func-sig -S \ // RUN: -emit-llvm %s -o - 2>&1 | FileCheck \ // RUN: --check-prefixes=NO-FLAG,FUNC-SIG-SCHEME-UNUSED %s @@ -155,13 +83,6 @@ // FUNC-SIG-SCHEME-UNUSED: warning: argument unused during compilation: // FUNC-SIG-SCHEME-UNUSED-SAME: '-mcf-branch-label-scheme=func-sig' -// LPAD-MACRO: __riscv_landing_pad 1{{$}} -// UNLABELED-MACRO: __riscv_landing_pad_unlabeled 1{{$}} -// FUNC-SIG-MACRO: __riscv_landing_pad_func_sig 1{{$}} -// NO-MACRO-NOT: __riscv_landing_pad -// NO-MACRO-NOT: __riscv_landing_pad_unlabeled -// NO-MACRO-NOT: __riscv_landing_pad_func_sig - // BRANCH-PROT-FLAG-DAG: [[P_FLAG:![0-9]+]] = !{i32 8, !"cf-protection-branch", i32 1} // UNLABELED-FLAG-DAG: [[S_FLAG:![0-9]+]] = !{i32 1, !"cf-branch-label-scheme", !"unlabeled"} // FUNC-SIG-FLAG-DAG: [[S_FLAG:![0-9]+]] = !{i32 1, !"cf-branch-label-scheme", !"func-sig"} diff --git a/clang/test/Preprocessor/riscv-cf-protection.c b/clang/test/Preprocessor/riscv-cf-protection.c new file mode 100644 index 0000000000000..a632f9422721a --- /dev/null +++ b/clang/test/Preprocessor/riscv-cf-protection.c @@ -0,0 +1,72 @@ +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s + +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=unlabeled -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s + +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s + +// RUN: %clang --target=riscv32 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=unlabeled -E -dM -emit-llvm %s -o - | \ +// RUN: FileCheck --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s + +// RUN: %clang --target=riscv32 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + +// RUN: %clang --target=riscv32 -mcf-branch-label-scheme=unlabeled -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s + +// RUN: %clang --target=riscv32 -mcf-branch-label-scheme=func-sig -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s + +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s + +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=unlabeled -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s + +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s + +// RUN: %clang --target=riscv64 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s + +// RUN: %clang --target=riscv64 -fcf-protection=branch \ +// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + +// RUN: %clang --target=riscv64 -mcf-branch-label-scheme=unlabeled -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s + +// RUN: %clang --target=riscv64 -mcf-branch-label-scheme=func-sig -E -dM %s \ +// RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s + +// LPAD-MACRO: __riscv_landing_pad 1{{$}} +// UNLABELED-MACRO: __riscv_landing_pad_unlabeled 1{{$}} +// FUNC-SIG-MACRO: __riscv_landing_pad_func_sig 1{{$}} +// NO-MACRO-NOT: __riscv_landing_pad +// NO-MACRO-NOT: __riscv_landing_pad_unlabeled +// NO-MACRO-NOT: __riscv_landing_pad_func_sig + +int main() { return 0; } >From 9269dc9b068232c3e875f9186dbbb6307f6de072 Mon Sep 17 00:00:00 2001 From: Ming-Yi Lai <ming-yi....@mediatek.com> Date: Mon, 17 Feb 2025 12:21:03 +0800 Subject: [PATCH 4/7] fixup: Add tests for default branch label scheme --- clang/test/Preprocessor/riscv-cf-protection.c | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/clang/test/Preprocessor/riscv-cf-protection.c b/clang/test/Preprocessor/riscv-cf-protection.c index a632f9422721a..292b2b94b33e0 100644 --- a/clang/test/Preprocessor/riscv-cf-protection.c +++ b/clang/test/Preprocessor/riscv-cf-protection.c @@ -1,3 +1,7 @@ +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch -E -dM %s -o - | \ +// RUN: FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ @@ -8,6 +12,10 @@ // RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -E -dM %s -o - 2>&1 | \ +// RUN: FileCheck --check-prefixes=NO-MACRO %s + // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=unlabeled -E -dM %s \ // RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s @@ -16,6 +24,9 @@ // RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -E -dM %s \ // RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s +// RUN: %clang --target=riscv32 -fcf-protection=branch -E -dM -emit-llvm %s \ +// RUN: -o - | FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + // RUN: %clang --target=riscv32 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -E -dM -emit-llvm %s -o - | \ // RUN: FileCheck --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s @@ -24,12 +35,19 @@ // RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s +// RUN: %clang --target=riscv32 -E -dM %s -o - 2>&1 | \ +// RUN: FileCheck --check-prefixes=NO-MACRO %s + // RUN: %clang --target=riscv32 -mcf-branch-label-scheme=unlabeled -E -dM %s \ // RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s // RUN: %clang --target=riscv32 -mcf-branch-label-scheme=func-sig -E -dM %s \ // RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch -E -dM %s -o - | \ +// RUN: FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ @@ -40,6 +58,10 @@ // RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -E -dM %s -o - 2>&1 | \ +// RUN: FileCheck --check-prefixes=NO-MACRO %s + // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=unlabeled -E -dM %s \ // RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s @@ -48,6 +70,9 @@ // RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -E -dM %s \ // RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s +// RUN: %clang --target=riscv64 -fcf-protection=branch -E -dM %s -o - | \ +// RUN: FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + // RUN: %clang --target=riscv64 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s @@ -56,6 +81,9 @@ // RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s +// RUN: %clang --target=riscv64 -E -dM %s -o - 2>&1 | \ +// RUN: FileCheck --check-prefixes=NO-MACRO %s + // RUN: %clang --target=riscv64 -mcf-branch-label-scheme=unlabeled -E -dM %s \ // RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s >From e3620c374a19b5d6088f81dd5f6214fba7c0d3fb Mon Sep 17 00:00:00 2001 From: Ming-Yi Lai <ming-yi....@mediatek.com> Date: Mon, 17 Feb 2025 14:31:56 +0800 Subject: [PATCH 5/7] fixup: Add tests for `-fcf-protection=full` --- clang/test/Preprocessor/riscv-cf-protection.c | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/clang/test/Preprocessor/riscv-cf-protection.c b/clang/test/Preprocessor/riscv-cf-protection.c index 292b2b94b33e0..eeeab7a3a09d6 100644 --- a/clang/test/Preprocessor/riscv-cf-protection.c +++ b/clang/test/Preprocessor/riscv-cf-protection.c @@ -12,6 +12,20 @@ // RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=full -E -dM %s -o - | \ +// RUN: FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=full \ +// RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s + +// RUN: %clang --target=riscv32 -menable-experimental-extensions \ +// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=full \ +// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -E -dM %s -o - 2>&1 | \ // RUN: FileCheck --check-prefixes=NO-MACRO %s @@ -35,6 +49,17 @@ // RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s +// RUN: %clang --target=riscv32 -fcf-protection=full -E -dM -emit-llvm %s \ +// RUN: -o - | FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + +// RUN: %clang --target=riscv32 -fcf-protection=full \ +// RUN: -mcf-branch-label-scheme=unlabeled -E -dM -emit-llvm %s -o - | \ +// RUN: FileCheck --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s + +// RUN: %clang --target=riscv32 -fcf-protection=full \ +// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + // RUN: %clang --target=riscv32 -E -dM %s -o - 2>&1 | \ // RUN: FileCheck --check-prefixes=NO-MACRO %s @@ -58,6 +83,20 @@ // RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=full -E -dM %s -o - | \ +// RUN: FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=full \ +// RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s + +// RUN: %clang --target=riscv64 -menable-experimental-extensions \ +// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=full \ +// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -E -dM %s -o - 2>&1 | \ // RUN: FileCheck --check-prefixes=NO-MACRO %s @@ -81,6 +120,17 @@ // RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s +// RUN: %clang --target=riscv64 -fcf-protection=full -E -dM %s -o - | \ +// RUN: FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + +// RUN: %clang --target=riscv64 -fcf-protection=full \ +// RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s + +// RUN: %clang --target=riscv64 -fcf-protection=full \ +// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ +// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s + // RUN: %clang --target=riscv64 -E -dM %s -o - 2>&1 | \ // RUN: FileCheck --check-prefixes=NO-MACRO %s >From f71d80b69370a83f75aba60b16cc5f4cc8f6bb2d Mon Sep 17 00:00:00 2001 From: Ming-Yi Lai <ming-yi....@mediatek.com> Date: Mon, 17 Feb 2025 16:02:09 +0800 Subject: [PATCH 6/7] fixup: Remove useless line in test and rename test file itself --- .../{riscv-cf-protection.c => riscv-cf-protection-branch.c} | 2 -- 1 file changed, 2 deletions(-) rename clang/test/Preprocessor/{riscv-cf-protection.c => riscv-cf-protection-branch.c} (99%) diff --git a/clang/test/Preprocessor/riscv-cf-protection.c b/clang/test/Preprocessor/riscv-cf-protection-branch.c similarity index 99% rename from clang/test/Preprocessor/riscv-cf-protection.c rename to clang/test/Preprocessor/riscv-cf-protection-branch.c index eeeab7a3a09d6..2fc289f957a81 100644 --- a/clang/test/Preprocessor/riscv-cf-protection.c +++ b/clang/test/Preprocessor/riscv-cf-protection-branch.c @@ -146,5 +146,3 @@ // NO-MACRO-NOT: __riscv_landing_pad // NO-MACRO-NOT: __riscv_landing_pad_unlabeled // NO-MACRO-NOT: __riscv_landing_pad_func_sig - -int main() { return 0; } >From 4e6c61050cc6389a184283b8ee09cefb27b28b48 Mon Sep 17 00:00:00 2001 From: Ming-Yi Lai <ming-yi....@mediatek.com> Date: Tue, 13 May 2025 11:13:05 +0800 Subject: [PATCH 7/7] fixup: Drop adding func-sig macro for now --- clang/lib/Basic/Targets/RISCV.cpp | 2 +- .../Preprocessor/riscv-cf-protection-branch.c | 65 ------------------- 2 files changed, 1 insertion(+), 66 deletions(-) diff --git a/clang/lib/Basic/Targets/RISCV.cpp b/clang/lib/Basic/Targets/RISCV.cpp index 3c0c16303f7bc..6c83bf4576bf8 100644 --- a/clang/lib/Basic/Targets/RISCV.cpp +++ b/clang/lib/Basic/Targets/RISCV.cpp @@ -253,7 +253,7 @@ void RISCVTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__riscv_landing_pad_unlabeled"); break; case CFBranchLabelSchemeKind::FuncSig: - Builder.defineMacro("__riscv_landing_pad_func_sig"); + // TODO: Define macros after the func-sig scheme is implemented break; case CFBranchLabelSchemeKind::Default: llvm_unreachable("default cf-branch-label scheme should already be " diff --git a/clang/test/Preprocessor/riscv-cf-protection-branch.c b/clang/test/Preprocessor/riscv-cf-protection-branch.c index 2fc289f957a81..f658e0a8c6c0f 100644 --- a/clang/test/Preprocessor/riscv-cf-protection-branch.c +++ b/clang/test/Preprocessor/riscv-cf-protection-branch.c @@ -1,31 +1,13 @@ -// RUN: %clang --target=riscv32 -menable-experimental-extensions \ -// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch -E -dM %s -o - | \ -// RUN: FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s -// RUN: %clang --target=riscv32 -menable-experimental-extensions \ -// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=branch \ -// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - -// RUN: %clang --target=riscv32 -menable-experimental-extensions \ -// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=full -E -dM %s -o - | \ -// RUN: FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -fcf-protection=full \ // RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s -// RUN: %clang --target=riscv32 -menable-experimental-extensions \ -// RUN: -march=rv32i_zicfilp1p0 -fcf-protection=full \ -// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv32 -menable-experimental-extensions \ // RUN: -march=rv32i_zicfilp1p0 -E -dM %s -o - 2>&1 | \ // RUN: FileCheck --check-prefixes=NO-MACRO %s @@ -38,28 +20,14 @@ // RUN: -march=rv32i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -E -dM %s \ // RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s -// RUN: %clang --target=riscv32 -fcf-protection=branch -E -dM -emit-llvm %s \ -// RUN: -o - | FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv32 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -E -dM -emit-llvm %s -o - | \ // RUN: FileCheck --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s -// RUN: %clang --target=riscv32 -fcf-protection=branch \ -// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - -// RUN: %clang --target=riscv32 -fcf-protection=full -E -dM -emit-llvm %s \ -// RUN: -o - | FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv32 -fcf-protection=full \ // RUN: -mcf-branch-label-scheme=unlabeled -E -dM -emit-llvm %s -o - | \ // RUN: FileCheck --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s -// RUN: %clang --target=riscv32 -fcf-protection=full \ -// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv32 -E -dM %s -o - 2>&1 | \ // RUN: FileCheck --check-prefixes=NO-MACRO %s @@ -69,34 +37,16 @@ // RUN: %clang --target=riscv32 -mcf-branch-label-scheme=func-sig -E -dM %s \ // RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s -// RUN: %clang --target=riscv64 -menable-experimental-extensions \ -// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch -E -dM %s -o - | \ -// RUN: FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s -// RUN: %clang --target=riscv64 -menable-experimental-extensions \ -// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=branch \ -// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - -// RUN: %clang --target=riscv64 -menable-experimental-extensions \ -// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=full -E -dM %s -o - | \ -// RUN: FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -fcf-protection=full \ // RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s -// RUN: %clang --target=riscv64 -menable-experimental-extensions \ -// RUN: -march=rv64i_zicfilp1p0 -fcf-protection=full \ -// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv64 -menable-experimental-extensions \ // RUN: -march=rv64i_zicfilp1p0 -E -dM %s -o - 2>&1 | \ // RUN: FileCheck --check-prefixes=NO-MACRO %s @@ -109,28 +59,14 @@ // RUN: -march=rv64i_zicfilp1p0 -mcf-branch-label-scheme=func-sig -E -dM %s \ // RUN: -o - 2>&1 | FileCheck --check-prefixes=NO-MACRO %s -// RUN: %clang --target=riscv64 -fcf-protection=branch -E -dM %s -o - | \ -// RUN: FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv64 -fcf-protection=branch \ // RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s -// RUN: %clang --target=riscv64 -fcf-protection=branch \ -// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - -// RUN: %clang --target=riscv64 -fcf-protection=full -E -dM %s -o - | \ -// RUN: FileCheck --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv64 -fcf-protection=full \ // RUN: -mcf-branch-label-scheme=unlabeled -E -dM %s -o - | FileCheck \ // RUN: --check-prefixes=LPAD-MACRO,UNLABELED-MACRO %s -// RUN: %clang --target=riscv64 -fcf-protection=full \ -// RUN: -mcf-branch-label-scheme=func-sig -E -dM %s -o - | FileCheck \ -// RUN: --check-prefixes=LPAD-MACRO,FUNC-SIG-MACRO %s - // RUN: %clang --target=riscv64 -E -dM %s -o - 2>&1 | \ // RUN: FileCheck --check-prefixes=NO-MACRO %s @@ -142,7 +78,6 @@ // LPAD-MACRO: __riscv_landing_pad 1{{$}} // UNLABELED-MACRO: __riscv_landing_pad_unlabeled 1{{$}} -// FUNC-SIG-MACRO: __riscv_landing_pad_func_sig 1{{$}} // NO-MACRO-NOT: __riscv_landing_pad // NO-MACRO-NOT: __riscv_landing_pad_unlabeled // NO-MACRO-NOT: __riscv_landing_pad_func_sig _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits