re PR debug/46241 (ice in dwarf2out.c)
authorRichard Guenther <rguenther@suse.de>
Wed, 3 Nov 2010 13:31:40 +0000 (13:31 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 3 Nov 2010 13:31:40 +0000 (13:31 +0000)
2010-11-03  Richard Guenther  <rguenther@suse.de>

PR middle-end/46241
* dwarf2out.c (scope_die_for): Properly detect global scope.

* g++.dg/debug/pr46241.C: New testcase.

From-SVN: r166245

gcc/ChangeLog
gcc/dwarf2out.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/debug/pr46241.C [new file with mode: 0644]

index 30b39a6..5c36acb 100644 (file)
@@ -1,5 +1,10 @@
 2010-11-03  Richard Guenther  <rguenther@suse.de>
 
+       PR middle-end/46241
+       * dwarf2out.c (scope_die_for): Properly detect global scope.
+
+2010-11-03  Richard Guenther  <rguenther@suse.de>
+
        PR tree-optimization/46190
        * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
        Properly compute peel iterations.
index 9209c0d..9bb569b 100644 (file)
@@ -17739,7 +17739,7 @@ scope_die_for (tree t, dw_die_ref context_die)
   if (containing_scope && TREE_CODE (containing_scope) == FUNCTION_TYPE)
     containing_scope = NULL_TREE;
 
-  if (containing_scope == NULL_TREE)
+  if (SCOPE_FILE_SCOPE_P (containing_scope))
     scope_die = comp_unit_die ();
   else if (TYPE_P (containing_scope))
     {
index f0a8888..26a8bde 100644 (file)
@@ -1,5 +1,10 @@
 2010-11-03  Richard Guenther  <rguenther@suse.de>
 
+       PR middle-end/46241
+       * g++.dg/debug/pr46241.C: New testcase.
+
+2010-11-03  Richard Guenther  <rguenther@suse.de>
+
        PR tree-optimization/46190
        * gfortran.dg/pr46190.f90: New testcase.
 
diff --git a/gcc/testsuite/g++.dg/debug/pr46241.C b/gcc/testsuite/g++.dg/debug/pr46241.C
new file mode 100644 (file)
index 0000000..95c814d
--- /dev/null
@@ -0,0 +1,19 @@
+class btIDebugDraw;
+class btCollisionWorld {
+    virtual btIDebugDraw* getDebugDrawer()  { };
+    static void rayTestSingle();
+};
+class btTriangleCallback {
+public:
+    virtual ~btTriangleCallback();
+};
+class btTriangleRaycastCallback: public btTriangleCallback {
+public:
+    btTriangleRaycastCallback();
+};
+void btCollisionWorld::rayTestSingle()
+{
+  struct BridgeTriangleRaycastCallback : public btTriangleRaycastCallback {
+      BridgeTriangleRaycastCallback() : btTriangleRaycastCallback() { }
+  };
+}