* lib/gcc-dg.exp (cleanup-ada-spec): New procedure.
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Oct 2012 21:34:13 +0000 (21:34 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Oct 2012 21:34:13 +0000 (21:34 +0000)
* lib/scanasm.exp (get_ada_spec_filename): Likewise.
(scan-ada-spec): Likewise.
(scan-ada-spec-not): Likewise.
* gcc.dg/dump-ada-spec-1.c: New test.
* g++.dg/other/dump-ada-spec-1.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192106 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/dump-ada-spec-1.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/dump-ada-spec-1.c [new file with mode: 0644]
gcc/testsuite/lib/gcc-dg.exp
gcc/testsuite/lib/scanasm.exp

index 6d99e71..f7003f9 100644 (file)
@@ -1,5 +1,14 @@
 2012-10-04  Eric Botcazou  <ebotcazou@adacore.com>
 
+       * lib/gcc-dg.exp (cleanup-ada-spec): New procedure.
+       * lib/scanasm.exp (get_ada_spec_filename): Likewise.
+       (scan-ada-spec): Likewise.
+       (scan-ada-spec-not): Likewise.
+       * gcc.dg/dump-ada-spec-1.c: New test.
+       * g++.dg/other/dump-ada-spec-1.C: Likewise.
+
+2012-10-04  Eric Botcazou  <ebotcazou@adacore.com>
+
        * gcc.dg/lto/20120723_0.c: Skip on SPARC 32-bit.
 
 2012-10-04  Florian Weimer  <fweimer@redhat.com>
diff --git a/gcc/testsuite/g++.dg/other/dump-ada-spec-1.C b/gcc/testsuite/g++.dg/other/dump-ada-spec-1.C
new file mode 100644 (file)
index 0000000..eb249e7
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-ada-spec" } */
+
+struct S
+{
+  int i;
+};
+
+/* { dg-final { scan-ada-spec "type S is record" } } */
+/* { dg-final { cleanup-ada-spec } } */
diff --git a/gcc/testsuite/gcc.dg/dump-ada-spec-1.c b/gcc/testsuite/gcc.dg/dump-ada-spec-1.c
new file mode 100644 (file)
index 0000000..eb249e7
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-ada-spec" } */
+
+struct S
+{
+  int i;
+};
+
+/* { dg-final { scan-ada-spec "type S is record" } } */
+/* { dg-final { cleanup-ada-spec } } */
index 2cc49f7..b3f8d3b 100644 (file)
@@ -503,6 +503,19 @@ proc cleanup-stack-usage { } {
     }
 }
 
+# Remove an Ada spec file for the current test.
+proc cleanup-ada-spec { } {
+    set testcase [testname-for-summary]
+    remove-build-file "[get_ada_spec_filename $testcase]"
+
+    # Clean up files for additional source files.
+    if [info exists additional_sources] {
+       foreach srcfile $additional_sources {
+           remove-build-file "[get_ada_spec_filename $srcfile]"
+       }
+    }
+}
+
 # Remove all dump files with the provided suffix.
 proc cleanup-dump { suffix } {
     set testcase [testname-for-summary]
index c513857..598948e 100644 (file)
@@ -184,6 +184,38 @@ proc scan-stack-usage-not { args } {
     dg-scan "scan-file-not" 0 $testcase $output_file $args
 }
 
+# Return the filename of the Ada spec corresponding to the argument.
+
+proc get_ada_spec_filename { testcase } {
+    # The name might include a list of options; extract the file name.
+    set filename  [lindex $testcase 0]
+    set tailname  [file tail $filename]
+    set extension [string trimleft [file extension $tailname] {.}]
+    set rootname  [regsub -all {\-} [file rootname $tailname] {_}]
+
+    return [string tolower "${rootname}_${extension}.ads"]
+}
+
+# Look for a pattern in the .ads file produced by the compiler.  See
+# dg-scan for details.
+
+proc scan-ada-spec { args } {
+    set testcase  [testname-for-summary]
+    set output_file "[get_ada_spec_filename $testcase]"
+
+    dg-scan "scan-file" 1 $testcase $output_file $args
+}
+
+# Check that a pattern is not present in the .ads file produced by the
+# compiler.  See dg-scan for details.
+
+proc scan-ada-spec-not { args } {
+    set testcase  [testname-for-summary]
+    set output_file "[get_ada_spec_filename $testcase]"
+
+    dg-scan "scan-file-not" 0 $testcase $output_file $args
+}
+
 # Call pass if pattern is present given number of times, otherwise fail.
 proc scan-assembler-times { args } {
     if { [llength $args] < 2 } {