123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #! /usr/bin/env perl
- # http://code.google.com/p/perl-compiler/issues/detail?id=50
- # B::CC UV for <<
- use Test::More tests => 1;
- use strict;
- BEGIN {
- unshift @INC, 't';
- require "test.pl";
- }
- use Config;
- my $ivsize = $Config{ivsize};
- my $script = <<'EOF';
- my $ok = 1;
- sub check {
- my $m = shift;
- my $s = sprintf("%lx $m\n", $m);
- $ok = 0 if $s =~ /fffe -2/;
- }
- my $maxuv = 0xffffffff if $ivsize == 4;
- $maxuv = 0xffffffffffffffff if $ivsize == 8;
- $maxuv = 0xffff if $ivsize == 2;
- die "1..1 skipped, unknown ivsize\n" unless $maxuv;
- my $maxiv = 0x7fffffff if $ivsize == 4;
- $maxiv = 0x7fffffffffffffff if $ivsize == 8;
- $maxiv = 0x7fff if $ivsize == 2;
- check($maxuv);
- check(($maxuv & $maxiv) << 1);
- my $mask = $maxuv;
- check($mask);
- my $mask1 = ($mask & $maxiv) << 1;
- check($mask1);
- $mask1 &= $maxuv;
- check($mask1);
- print "ok\n" if $ok;
- EOF
- $script =~ s/\$ivsize/$ivsize/eg;
- use B::CC;
- ctestok(1, "CC", "ccode50i", $script, # fixed with r633
- ($B::CC::VERSION < 1.08 ? "TODO ":"")
- . "perlcc UV << issue50 - fixed with B-C-1.28");
|