re PR target/60609 (Error: value of 256 too large for field of 1 bytes at 68242)
authorCharles Baylis <charles.baylis@linaro.org>
Mon, 7 Apr 2014 15:07:33 +0000 (15:07 +0000)
committerYvan Roux <yroux@gcc.gnu.org>
Mon, 7 Apr 2014 15:07:33 +0000 (15:07 +0000)
2014-04-07  Charles Baylis  <charles.baylis@linaro.org>

        PR target/60609
        * config/arm/arm.h (ASM_OUTPUT_CASE_END): Remove.
        (LABEL_ALIGN_AFTER_BARRIER): Align barriers which occur after
        ADDR_DIFF_VEC.

2014-04-07  Charles Baylis  <charles.baylis@linaro.org>

        PR target/60609
        * g++.dg/torture/pr60609.C: New test.

From-SVN: r209191

gcc/ChangeLog
gcc/config/arm/arm.h
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/torture/pr60609.C [new file with mode: 0644]

index b7743c7..12fc17f 100644 (file)
@@ -1,3 +1,10 @@
+2014-04-07  Charles Baylis  <charles.baylis@linaro.org>
+
+       PR target/60609
+       * config/arm/arm.h (ASM_OUTPUT_CASE_END): Remove.
+       (LABEL_ALIGN_AFTER_BARRIER): Align barriers which occur after
+       ADDR_DIFF_VEC.
+
 2014-04-07  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/60766
index 7ca47a7..a4bbd12 100644 (file)
@@ -2194,14 +2194,9 @@ extern int making_const_table;
 #undef ASM_OUTPUT_BEFORE_CASE_LABEL
 #define ASM_OUTPUT_BEFORE_CASE_LABEL(FILE, PREFIX, NUM, TABLE) /* Empty.  */
 
-/* Make sure subsequent insns are aligned after a TBB.  */
-#define ASM_OUTPUT_CASE_END(FILE, NUM, JUMPTABLE)      \
-  do                                                   \
-    {                                                  \
-      if (GET_MODE (PATTERN (JUMPTABLE)) == QImode)    \
-       ASM_OUTPUT_ALIGN (FILE, 1);                     \
-    }                                                  \
-  while (0)
+#define LABEL_ALIGN_AFTER_BARRIER(LABEL)                \
+   (GET_CODE (PATTERN (prev_active_insn (LABEL))) == ADDR_DIFF_VEC \
+   ? 1 : 0)
 
 #define ARM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL)  \
   do                                                   \
index a75405d..cd07b28 100644 (file)
@@ -1,3 +1,8 @@
+2014-04-07  Charles Baylis  <charles.baylis@linaro.org>
+
+       PR target/60609
+       * g++.dg/torture/pr60609.C: New test.
+
 2014-04-07  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/60766
diff --git a/gcc/testsuite/g++.dg/torture/pr60609.C b/gcc/testsuite/g++.dg/torture/pr60609.C
new file mode 100644 (file)
index 0000000..9ddec0b
--- /dev/null
@@ -0,0 +1,252 @@
+/* { dg-do assemble } */
+
+class exception
+{
+};
+class bad_alloc:exception
+{
+};
+class logic_error:exception
+{
+};
+class domain_error:logic_error
+{
+};
+class invalid_argument:logic_error
+{
+};
+class length_error:logic_error
+{
+};
+class overflow_error:exception
+{
+};
+typedef int mpz_t[];
+template < class > class __gmp_expr;
+template <> class __gmp_expr < mpz_t >
+{
+    ~__gmp_expr ();
+};
+
+class PIP_Solution_Node;
+class internal_exception
+{
+    ~internal_exception ();
+};
+class not_an_integer:internal_exception
+{
+};
+class not_a_variable:internal_exception
+{
+};
+class not_an_optimization_mode:internal_exception
+{
+};
+class not_a_bounded_integer_type_width:internal_exception
+{
+};
+class not_a_bounded_integer_type_representation:internal_exception
+{
+};
+class not_a_bounded_integer_type_overflow:internal_exception
+{
+};
+class not_a_complexity_class:internal_exception
+{
+};
+class not_a_control_parameter_name:internal_exception
+{
+};
+class not_a_control_parameter_value:internal_exception
+{
+};
+class not_a_pip_problem_control_parameter_name:internal_exception
+{
+};
+class not_a_pip_problem_control_parameter_value:internal_exception
+{
+};
+class not_a_relation:internal_exception
+{
+};
+class ppl_handle_mismatch:internal_exception
+{
+};
+class timeout_exception
+{
+    ~timeout_exception ();
+};
+class deterministic_timeout_exception:timeout_exception
+{
+};
+void __assert_fail (const char *, const char *, int, int *)
+__attribute__ ((__noreturn__));
+void PL_get_pointer (void *);
+int Prolog_is_address ();
+inline int
+Prolog_get_address (void **p1)
+{
+    Prolog_is_address ()? static_cast <
+    void >(0) : __assert_fail ("Prolog_is_address", "./swi_cfli.hh", 0, 0);
+    PL_get_pointer (p1);
+    return 0;
+}
+
+class non_linear:internal_exception
+{
+};
+class not_unsigned_integer:internal_exception
+{
+};
+class not_universe_or_empty:internal_exception
+{
+};
+class not_a_nil_terminated_list:internal_exception
+{
+};
+class PPL_integer_out_of_range
+{
+    __gmp_expr < mpz_t > n;
+};
+void handle_exception ();
+template < typename T > T * term_to_handle (int, const char *)
+{
+    if (Prolog_is_address ())
+    {
+        void *p;
+        Prolog_get_address (&p);
+        return static_cast < T * >(0);
+    }
+    throw;
+}
+
+void
+ppl_new_MIP_Problem_from_MIP_Problem ()
+try
+{
+    term_to_handle < int >(0, "ppl_new_MIP_Problem_from_MIP_Problem/2");
+}
+
+catch (exception &)
+{
+}
+
+int
+ppl_PIP_Tree_Node_parametric_values ()
+{
+    try
+    {
+        PIP_Solution_Node *a = term_to_handle < PIP_Solution_Node > (0, 0);
+       (void)a;
+        return 1;
+    }
+    catch (internal_exception &)
+    {
+    }
+    catch (not_unsigned_integer &)
+    {
+        handle_exception ();
+    }
+    catch (non_linear &)
+    {
+        handle_exception ();
+    }
+    catch (not_a_variable &)
+    {
+        handle_exception ();
+    }
+    catch (not_an_integer &)
+    {
+        handle_exception ();
+    }
+    catch (ppl_handle_mismatch &)
+    {
+        handle_exception ();
+    }
+    catch (not_an_optimization_mode &)
+    {
+        handle_exception ();
+    }
+    catch (not_a_complexity_class &)
+    {
+        handle_exception ();
+    }
+    catch (not_a_bounded_integer_type_width &)
+    {
+        handle_exception ();
+    }
+    catch (not_a_bounded_integer_type_representation &)
+    {
+        handle_exception ();
+    }
+    catch (not_a_bounded_integer_type_overflow &)
+    {
+        handle_exception ();
+    }
+    catch (not_a_control_parameter_name &)
+    {
+        handle_exception ();
+    }
+    catch (not_a_control_parameter_value &)
+    {
+        handle_exception ();
+    }
+    catch (not_a_pip_problem_control_parameter_name &)
+    {
+        handle_exception ();
+    }
+    catch (not_a_pip_problem_control_parameter_value &)
+    {
+        handle_exception ();
+    }
+    catch (not_universe_or_empty &)
+    {
+        handle_exception ();
+    }
+    catch (not_a_relation &)
+    {
+        handle_exception ();
+    }
+    catch (not_a_nil_terminated_list &)
+    {
+        handle_exception ();
+    }
+    catch (PPL_integer_out_of_range &)
+    {
+        handle_exception ();
+    }
+    catch (int &)
+    {
+    } catch (timeout_exception &)
+    {
+        handle_exception ();
+    } catch (deterministic_timeout_exception &)
+    {
+        handle_exception ();
+    } catch (overflow_error &)
+    {
+        handle_exception ();
+    } catch (domain_error &)
+    {
+        handle_exception ();
+    } catch (length_error &)
+    {
+        handle_exception ();
+    } catch (invalid_argument &)
+    {
+        handle_exception ();
+    } catch (logic_error &)
+    {
+        handle_exception ();
+    } catch (bad_alloc &)
+    {
+        handle_exception ();
+    } catch (exception &)
+    {
+        handle_exception ();
+    } catch ( ...)
+    {
+        handle_exception ();
+    }
+    return 0;
+}