if(arr) now a warning

John Colvin via Digitalmars-d digitalmars-d at puremagic.com
Fri Apr 10 10:37:01 PDT 2015


On Friday, 10 April 2015 at 11:59:32 UTC, Kagamin wrote:
> On Friday, 10 April 2015 at 11:39:59 UTC, Vladimir Panteleev 
> wrote:
>> https://github.com/D-Programming-Language/tools/pull/166/files
>> I don't know the code well enough to know if arr != null would 
>> be more appropriate.
>
> It's probably a nitpick, I like arr!=null expression a lot, but 
> currently compiler generates a horrible code for it: ldc 
> generates comparison with typeinfos, and dmd inlines whole 
> memcmp among other things instead of converting it to just 
> arr.length!=0.

gcc does what you want:

bool foo(int[] a)
{
   return a != null;
}

bool bar(int[] a)
{
   return a.length != 0;
}

bool example.foo(int[]):
	testq	%rdi, %rdi
	setne	%al
	ret
bool example.bar(int[]):
	testq	%rdi, %rdi
	setne	%al
	ret


More information about the Digitalmars-d mailing list