[llvm] r229980 - Disallow implicit conversions from None to integer types

Eric Christopher echristo at gmail.com
Fri Feb 20 00:00:02 PST 2015


Broke lld it looks like:

llvm[4]: Compiling WinLinkDriver.cpp for Debug+Asserts build

*/usr/local/google/home/echristo/sources/llvm/tools/lld/lib/Driver/WinLinkDriver.cpp:461:12:
**error: **cannot initialize return object of type 'bool' with an lvalue of
type 'llvm::NoneType'*

    return llvm::None;

*           ^~~~~~~~~~*

1 error generated.


On Thu Feb 19 2015 at 11:32:53 PM Justin Bogner <mail at justinbogner.com>
wrote:

> Author: bogner
> Date: Fri Feb 20 01:28:28 2015
> New Revision: 229980
>
> URL: http://llvm.org/viewvc/llvm-project?rev=229980&view=rev
> Log:
> Disallow implicit conversions from None to integer types
>
> This fixes an error introduced in r228934 where None was converted to
> an int instead of the int being converted to an Optional as intended.
> We make that sort of mistake a compile error by changing NoneType into
> a scoped enum.
>
> Finally, provide a static NoneType called None to avoid forcing all
> users to spell it NoneType::None.
>
> Modified:
>     llvm/trunk/include/llvm/ADT/None.h
>     llvm/trunk/lib/ProfileData/CoverageMapping.cpp
>
> Modified: llvm/trunk/include/llvm/ADT/None.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/
> llvm/ADT/None.h?rev=229980&r1=229979&r2=229980&view=diff
> ============================================================
> ==================
> --- llvm/trunk/include/llvm/ADT/None.h (original)
> +++ llvm/trunk/include/llvm/ADT/None.h Fri Feb 20 01:28:28 2015
> @@ -19,9 +19,8 @@
>  namespace llvm {
>  /// \brief A simple null object to allow implicit construction of
> Optional<T>
>  /// and similar types without having to spell out the specialization's
> name.
> -enum NoneType {
> -  None
> -};
> +enum class NoneType { None };
> +static NoneType None;
>  }
>
>  #endif
>
> Modified: llvm/trunk/lib/ProfileData/CoverageMapping.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/
> ProfileData/CoverageMapping.cpp?rev=229980&r1=229979&r2=229980&view=diff
> ============================================================
> ==================
> --- llvm/trunk/lib/ProfileData/CoverageMapping.cpp (original)
> +++ llvm/trunk/lib/ProfileData/CoverageMapping.cpp Fri Feb 20 01:28:28
> 2015
> @@ -361,7 +361,9 @@ static Optional<unsigned> findMainViewFi
>        IsNotExpandedFile[CR.ExpandedFileID] = false;
>    IsNotExpandedFile &= FilenameEquivalence;
>    int I = IsNotExpandedFile.find_first();
> -  return I != -1 ? I : None;
> +  if (I == -1)
> +    return None;
> +  return I;
>  }
>
>  static Optional<unsigned> findMainViewFileID(const FunctionRecord
> &Function) {
> @@ -370,7 +372,9 @@ static Optional<unsigned> findMainViewFi
>      if (CR.Kind == CounterMappingRegion::ExpansionRegion)
>        IsNotExpandedFile[CR.ExpandedFileID] = false;
>    int I = IsNotExpandedFile.find_first();
> -  return I != -1 ? I : None;
> +  if (I == -1)
> +    return None;
> +  return I;
>  }
>
>  /// Sort a nested sequence of regions from a single file.
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150220/8c8ee6cc/attachment.html>


More information about the llvm-commits mailing list