r259874 - CodeGen: correct Windows ARM C++ assertion

Saleem Abdulrasool via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 16 21:03:32 PST 2016


On Thu, Feb 4, 2016 at 8:12 PM, Saleem Abdulrasool via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> Author: compnerd
> Date: Thu Feb  4 22:12:40 2016
> New Revision: 259874
>
> URL: http://llvm.org/viewvc/llvm-project?rev=259874&view=rev
> Log:
> CodeGen: correct Windows ARM C++ assertion
>

Id like to merge this to the 3.8 release.  It only effects Windows ARM code
generation, so should be quite safe.


> Because the Decl is explicitly passed as nullptr further up the call
> chain, it
> is possible to invoke isa on a nullptr, which will assert.  Guard against
> the
> nullptr.
>
> Take the opportunity to reuse the helper method rather than
> re-implementing this
> logic.
>
> Added:
>     cfe/trunk/test/CodeGenCXX/windows-on-arm-stack-probe-size.cpp
> Modified:
>     cfe/trunk/lib/CodeGen/TargetInfo.cpp
>
> Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=259874&r1=259873&r2=259874&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original)
> +++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Thu Feb  4 22:12:40 2016
> @@ -4889,9 +4889,6 @@ public:
>  };
>
>  class WindowsARMTargetCodeGenInfo : public ARMTargetCodeGenInfo {
> -  void addStackProbeSizeTargetAttribute(const Decl *D, llvm::GlobalValue
> *GV,
> -                                        CodeGen::CodeGenModule &CGM)
> const;
> -
>  public:
>    WindowsARMTargetCodeGenInfo(CodeGenTypes &CGT, ARMABIInfo::ABIKind K)
>        : ARMTargetCodeGenInfo(CGT, K) {}
> @@ -4900,18 +4897,6 @@ public:
>                             CodeGen::CodeGenModule &CGM) const override;
>  };
>
> -void WindowsARMTargetCodeGenInfo::addStackProbeSizeTargetAttribute(
> -    const Decl *D, llvm::GlobalValue *GV, CodeGen::CodeGenModule &CGM)
> const {
> -  if (!isa<FunctionDecl>(D))
> -    return;
> -  if (CGM.getCodeGenOpts().StackProbeSize == 4096)
> -    return;
> -
> -  llvm::Function *F = cast<llvm::Function>(GV);
> -  F->addFnAttr("stack-probe-size",
> -               llvm::utostr(CGM.getCodeGenOpts().StackProbeSize));
> -}
> -
>  void WindowsARMTargetCodeGenInfo::setTargetAttributes(
>      const Decl *D, llvm::GlobalValue *GV, CodeGen::CodeGenModule &CGM)
> const {
>    ARMTargetCodeGenInfo::setTargetAttributes(D, GV, CGM);
>
> Added: cfe/trunk/test/CodeGenCXX/windows-on-arm-stack-probe-size.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/windows-on-arm-stack-probe-size.cpp?rev=259874&view=auto
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/windows-on-arm-stack-probe-size.cpp (added)
> +++ cfe/trunk/test/CodeGenCXX/windows-on-arm-stack-probe-size.cpp Thu Feb
> 4 22:12:40 2016
> @@ -0,0 +1,13 @@
> +// RUN: %clang_cc1 -triple thumbv7--windows-msvc -S -emit-llvm -o - -x
> c++ %s | FileCheck %s
> +// RUN: %clang_cc1 -triple thumbv7--windows-itanium -fno-use-cxa-atexit
> -S -emit-llvm -o - -x c++ %s | FileCheck %s
> +
> +class C {
> +public:
> +  ~C();
> +};
> +
> +static C sc;
> +void f(const C &ci) { sc = ci; }
> +
> +// CHECK: atexit
> +
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>



-- 
Saleem Abdulrasool
compnerd (at) compnerd (dot) org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160216/2e492717/attachment-0001.html>


More information about the cfe-commits mailing list