From patchwork Sat Apr 15 15:24:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Iain Buclaw X-Patchwork-Id: 751052 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3w4yxm2j0fz9s7k for ; Sun, 16 Apr 2017 01:24:43 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="LcGYthF7"; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:from:date:message-id:subject:to:content-type; q= dns; s=default; b=yXBtpwxKZKksK5jnZasatL7dKLKVQJ5/LyiXnOl5DHdXbE tQ0Azdf//g/ryNApg0Ui75aroCe+cNECyACfz/Y8YMoDKnpxkVF2YsjVcQ4K+JnE fjtJyw1AefdlZeCKIaHYFxZSLyRPd60yyVBXDdG1QOnY9CIBdspJIpfYvW1/E= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:from:date:message-id:subject:to:content-type; s= default; bh=VeLYjtBjiKUqfJ++ngPCQ7K++zk=; b=LcGYthF7S4g07RQX3yMG Y+lYQGhsunn8qXro4EzmpNSI1HW8TMmVYMGMWbvmtSdbiW1uuvOjXND6I5voHQAa n0DmcjRTdi1Ae2RBaVi4DVLWGVlu/9dBJ4LgCp2s6C5SygdOTa4nKwTlXsG5fxEj ex9IPBPDjk3igoZAkGXi+cA= Received: (qmail 37721 invoked by alias); 15 Apr 2017 15:24:27 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 37596 invoked by uid 89); 15 Apr 2017 15:24:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.0 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=positive X-HELO: mail-ua0-f182.google.com Received: from mail-ua0-f182.google.com (HELO mail-ua0-f182.google.com) (209.85.217.182) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 15 Apr 2017 15:24:19 +0000 Received: by mail-ua0-f182.google.com with SMTP id f10so36794561uaa.2 for ; Sat, 15 Apr 2017 08:24:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:from:date:message-id:subject :to; bh=K5TEbo6kightsuXRlCaNAtNRhOtBTR6lXZ2q7nnYKsc=; b=EjDkvmNb/gHk0MooU39uy+xZyi4vplOuJRefhUyikzW8IM1T65YZuENfIn4FM8HObf jCxzVgQbo+oL246umzdpgVD+U1558I3flwI/32LPLQ8w8FMOh7Smf2gcUhTK4Tr6ZboM ZpbAKwhl2fD+lUEe/yFmYAbasZw/mWeYWiVuywt2jUVyPsPgcfi1aVXb7U/vuVnkgY5B YsiQMFRw1ovDcllHE+V+9d/lykiRXOTajqEVPHtAWrFH3WnYPZYyUqxyiwXvqEaAPG3h 1xe2ezVaQXuvviNHSOQeZSCSgBR7jhoQ1UvLebjnVcILGmLjcoPHZIXzL34uYUJVn3pM 5H7w== X-Gm-Message-State: AN3rC/4k8lIF5cphPVXVBbXde6VWOAYiw24OkshhYPZ98hI+eLvghUL6 +kMupCKkqfYvah0khO9dhJ556OtFdK5d X-Received: by 10.176.9.196 with SMTP id e4mr398966uah.34.1492269848567; Sat, 15 Apr 2017 08:24:08 -0700 (PDT) MIME-Version: 1.0 Received: by 10.31.41.142 with HTTP; Sat, 15 Apr 2017 08:24:08 -0700 (PDT) From: Iain Buclaw Date: Sat, 15 Apr 2017 17:24:08 +0200 Message-ID: Subject: [PATCH 4/7] [D] libiberty: Remove wrongly spec'd mangle rule for encoded integers. To: gcc-patches X-IsSubscribed: yes This updates the implementation to reflect a part of the D ABI spec that has been removed. There should never be a bare integer value encoded into a template argument list. Integers are always prefixed by `i' if they are positive or `N' if they are negative. Have verified this indeed is the case using the code below, and updated all coverage tests to match the compiler. module demangle; template test(alias T) { void test() { auto t = T; } } pragma(msg, (test!(cast(byte)123)).mangleof); pragma(msg, (test!(cast(int)123)).mangleof); pragma(msg, (test!(cast(short)123)).mangleof); pragma(msg, (test!(cast(ubyte)123)).mangleof); pragma(msg, (test!(cast(uint)123)).mangleof); pragma(msg, (test!(cast(ushort)123)).mangleof); pragma(msg, (test!(cast(long)123)).mangleof); pragma(msg, (test!(cast(ulong)123)).mangleof); pragma(msg, (test!(true)).mangleof); pragma(msg, (test!(false)).mangleof); pragma(msg, (test!('\x0a')).mangleof); pragma(msg, (test!(' ')).mangleof); pragma(msg, (test!('A')).mangleof); pragma(msg, (test!('~')).mangleof); pragma(msg, (test!('\u03e8')).mangleof); pragma(msg, (test!('\U000186a0')).mangleof); commit 30ff1ef529c4711ab08e168c79e4971cd44f17f4 Author: Iain Buclaw Date: Sat Apr 15 11:35:35 2017 +0200 libiberty/ChangeLog: 2017-04-15 Iain Buclaw * d-demangle.c (dlang_value): Remove fallthrough and cases for digits. * testsuite/d-demangle-expected: Update integer value tests. diff --git a/libiberty/d-demangle.c b/libiberty/d-demangle.c index 533653f..71be8fb 100644 --- a/libiberty/d-demangle.c +++ b/libiberty/d-demangle.c @@ -1242,9 +1242,6 @@ dlang_value (string *decl, const char *mangled, const char *name, char type) mangled++; if (*mangled < '0' || *mangled > '9') return NULL; - /* Fall through */ - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': mangled = dlang_parse_integer (decl, mangled, type); break; diff --git a/libiberty/testsuite/d-demangle-expected b/libiberty/testsuite/d-demangle-expected index 530e0e6..0692729 100644 --- a/libiberty/testsuite/d-demangle-expected +++ b/libiberty/testsuite/d-demangle-expected @@ -698,35 +698,35 @@ _D8demangle13__T4testVPinZv demangle.test!(null) # --format=dlang -_D8demangle14__T4testVg123Zv +_D8demangle15__T4testVgi123Zv demangle.test!(123) # --format=dlang -_D8demangle14__T4testVi123Zv +_D8demangle15__T4testVii123Zv demangle.test!(123) # --format=dlang -_D8demangle14__T4testVs123Zv +_D8demangle15__T4testVsi123Zv demangle.test!(123) # --format=dlang -_D8demangle14__T4testVh123Zv +_D8demangle15__T4testVhi123Zv demangle.test!(123u) # --format=dlang -_D8demangle14__T4testVk123Zv +_D8demangle15__T4testVki123Zv demangle.test!(123u) # --format=dlang -_D8demangle14__T4testVt123Zv +_D8demangle15__T4testVti123Zv demangle.test!(123u) # --format=dlang -_D8demangle14__T4testVl123Zv +_D8demangle15__T4testVli123Zv demangle.test!(123L) # --format=dlang -_D8demangle14__T4testVm123Zv +_D8demangle15__T4testVmi123Zv demangle.test!(123uL) # --format=dlang @@ -746,35 +746,35 @@ _D8demangle15__T4testVmN123Zv demangle.test!(-123uL) # --format=dlang -_D8demangle12__T4testVb1Zv +_D8demangle13__T4testVbi1Zv demangle.test!(true) # --format=dlang -_D8demangle12__T4testVb0Zv +_D8demangle13__T4testVbi0Zv demangle.test!(false) # --format=dlang -_D8demangle13__T4testVa10Zv +_D8demangle14__T4testVai10Zv demangle.test!('\x0a') # --format=dlang -_D8demangle13__T4testVa32Zv +_D8demangle14__T4testVai32Zv demangle.test!(' ') # --format=dlang -_D8demangle13__T4testVa65Zv +_D8demangle14__T4testVai65Zv demangle.test!('A') # --format=dlang -_D8demangle14__T4testVa126Zv +_D8demangle15__T4testVai126Zv demangle.test!('~') # --format=dlang -_D8demangle15__T4testVu1000Zv +_D8demangle16__T4testVui1000Zv demangle.test!('\u03e8') # --format=dlang -_D8demangle17__T4testVw100000Zv +_D8demangle18__T4testVwi100000Zv demangle.test!('\U000186a0') # --format=dlang @@ -1076,7 +1076,7 @@ _D8demangle20__T2fnVAiA4i1i2i3i4Z2fnFZv demangle.fn!([1, 2, 3, 4]).fn() # --format=dlang -_D8demangle10__T2fnVi1Z2fnFZv +_D8demangle11__T2fnVii1Z2fnFZv demangle.fn!(1).fn() # --format=dlang @@ -1104,7 +1104,7 @@ _D8demangle2fnFNgiZNgi demangle.fn(inout(int)) # --format=dlang -_D8demangle29__T2fnVa97Va9Va0Vu257Vw65537Z2fnFZv +_D8demangle34__T2fnVai97Vai9Vai0Vui257Vwi65537Z2fnFZv demangle.fn!('a', '\x09', '\x00', '\u0101', '\U00010001').fn() # --format=dlang