OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [obj-c++.dg/] [try-catch-9.mm] - Blame information for rev 703

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 703 jeremybenn
/* Check that local variables that get modified inside the @try
2
   block survive until the @catch block is reached.  */
3
/* Developed by Ziemowit Laski .  */
4
 
5
/* { dg-do run } */
6
/* { dg-xfail-run-if "PR23616" { *-*-* } { "-fgnu-runtime" } { "-fnext-runtime" } } */
7
/* { dg-xfail-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" "-fgnu-runtime" } { "" } }
8
/* { dg-prune-output ".*internal compiler error.*" } */
9
/* { dg-options "-fobjc-exceptions -O2" } */
10
 
11
#include "../objc-obj-c++-shared/TestsuiteObject.m"
12
#include 
13
#include 
14
 
15
int gi1 = 9, gi2 = 19;
16
float gf1 = 9.0, gf2 = 19.0;
17
id obj2 = nil;
18
 
19
void foo (int arg1, float *arg2)
20
{
21
  int *pi = &gi1;
22
  float *pf = &gf1;
23
  id obj1 = nil;
24
  int local1 = 45, local2 = 47;
25
  float local3 = 3.0, local4 = 4.0;
26
  register int local5 = 15;
27
  static float local6 = 16.0;
28
 
29
  @try {
30
    local1 = 123;
31
    local2 = 345;
32
    local3 = 5.0;
33
    local4 = 6.0;
34
    local5 = 17;
35
    local6 = 18.0;
36
    pi = &gi2;
37
    pf = &gf2;
38
    obj2 = obj1 = [TestsuiteObject new];
39
    arg1 = 17;
40
    arg2 = &gf2;
41
 
42
    @throw [TestsuiteObject new];
43
  }
44
  @catch (TestsuiteObject *obj) {
45
   if (local1 != 123 || local2 != 345 || local3 != 5.0
46
       || local4 != 6.0 || local5 != 17 || local6 != 18.0) {
47
     printf("Abort 1\n");
48
     abort();
49
   }
50
   if (pi != &gi2 || pf != &gf2) {
51
     printf("Abort 2\n");
52
     abort();
53
   }
54
   if (!obj1 || obj1 != obj2) {
55
     printf("Abort 3\n");
56
     abort();
57
   }
58
   if (arg1 != 17 || arg2 != &gf2) {
59
     printf("Abort 4\n");
60
     abort();
61
   }
62
  }
63
}
64
 
65
int main(void) {
66
  foo(15, &gf1);
67
  return 0;
68
}
69
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.