[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