Por que a divisão inteira por -1 (negativa) resulta em FPE?

Tenho a tarefa de expelir algunsaparentemente comportamentos estranhos do código C (executando no x86). Posso facilmente concluir tudo o mais, mas este realmente me confundiu.

Saídas do snippet de código 1-2147483648

int a = 0x80000000;
int b = a / -1;
printf("%d\n", b);

O trecho de código 2 não produz nada e fornece umFloating point exception

int a = 0x80000000;
int b = -1;
int c = a / b;
printf("%d\n", c);

Sei bem o motivo do resultado do Snippet de código 1 (1 + ~INT_MIN == INT_MIN), mas não consigo entender direito como a divisão inteira por -1 pode gerar FPE, nem reproduzi-la no meu telefone Android (AArch64, GCC 7.2.0). O código 2 apenas gera o mesmo que o código 1 sem exceções. É um ocultoerro recurso do processador x86?

A tarefa não contou mais nada (incluindo arquitetura da CPU), mas como todo o curso é baseado em uma distribuição Linux para desktop, você pode assumir com segurança que é um x86 moderno.

Editar: Entrei em contato com meu amigo e ele testou o código no Ubuntu 16.04 (Intel Kaby Lake, GCC 6.3.0). O resultado foi consistente com o que a atribuição declarava (o Código 1 produziu a referida coisa e o Código 2 caiu com o FPE).

questionAnswers(5)

yourAnswerToTheQuestion