stuij created this revision. Herald added a subscriber: kristof.beyls. stuij requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
The following commits added commandline arguments to control following the Arm Procedure Call Standard for certain volatile bitfield operations: - https://reviews.llvm.org/D67399 - https://reviews.llvm.org/D72932 This commit fixes the oversight that these args weren't passed from the driver to cc1 if appropriate. Where *appropriate* means: - `-faapcs-bitfield-width`: is the default, so won't be passed - `-fno-aapcs-bitfield-width`: should be passed - `-faapcs-bitfield-load`: should be passed Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D96784 Files: clang/lib/Driver/ToolChains/Clang.cpp Index: clang/lib/Driver/ToolChains/Clang.cpp =================================================================== --- clang/lib/Driver/ToolChains/Clang.cpp +++ clang/lib/Driver/ToolChains/Clang.cpp @@ -1522,6 +1522,15 @@ } } +void AddAAPCSVolatileBitfieldArgs(const ArgList &Args, ArgStringList &CmdArgs) { + if (!Args.hasFlag(options::OPT_faapcs_bitfield_width, + options::OPT_fno_aapcs_bitfield_width, true)) + CmdArgs.push_back("-fno-aapcs-bitfield-width"); + + if (Args.getLastArg(options::OPT_ForceAAPCSBitfieldLoad)) + CmdArgs.push_back("-faapcs-bitfield-load"); +} + namespace { void RenderARMABI(const llvm::Triple &Triple, const ArgList &Args, ArgStringList &CmdArgs) { @@ -1580,6 +1589,8 @@ if (Args.getLastArg(options::OPT_mcmse)) CmdArgs.push_back("-mcmse"); + + AddAAPCSVolatileBitfieldArgs(Args, CmdArgs); } void Clang::RenderTargetOptions(const llvm::Triple &EffectiveTriple, @@ -1768,6 +1779,8 @@ D.Diag(diag::err_drv_unsupported_option_argument) << A->getOption().getName() << Val; } + + AddAAPCSVolatileBitfieldArgs(Args, CmdArgs); } void Clang::AddMIPSTargetArgs(const ArgList &Args,
Index: clang/lib/Driver/ToolChains/Clang.cpp =================================================================== --- clang/lib/Driver/ToolChains/Clang.cpp +++ clang/lib/Driver/ToolChains/Clang.cpp @@ -1522,6 +1522,15 @@ } } +void AddAAPCSVolatileBitfieldArgs(const ArgList &Args, ArgStringList &CmdArgs) { + if (!Args.hasFlag(options::OPT_faapcs_bitfield_width, + options::OPT_fno_aapcs_bitfield_width, true)) + CmdArgs.push_back("-fno-aapcs-bitfield-width"); + + if (Args.getLastArg(options::OPT_ForceAAPCSBitfieldLoad)) + CmdArgs.push_back("-faapcs-bitfield-load"); +} + namespace { void RenderARMABI(const llvm::Triple &Triple, const ArgList &Args, ArgStringList &CmdArgs) { @@ -1580,6 +1589,8 @@ if (Args.getLastArg(options::OPT_mcmse)) CmdArgs.push_back("-mcmse"); + + AddAAPCSVolatileBitfieldArgs(Args, CmdArgs); } void Clang::RenderTargetOptions(const llvm::Triple &EffectiveTriple, @@ -1768,6 +1779,8 @@ D.Diag(diag::err_drv_unsupported_option_argument) << A->getOption().getName() << Val; } + + AddAAPCSVolatileBitfieldArgs(Args, CmdArgs); } void Clang::AddMIPSTargetArgs(const ArgList &Args,
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits