This is an archive of the discontinued LLVM Phabricator instance.

[mips][ias] Fix all the hacks related to MIPS-specific unary operators (%hi/%lo/%gp_rel/etc.).
ClosedPublic

Authored by dsanders on Aug 3 2016, 2:28 AM.

Details

Summary

They are now lexed as a single token on targets where
MCAsmInfo::HasMipsExpressions is true and then parsed in a similar way to
the '~' operator as part of MCExpr::parseExpression.

As a result:

  • expressions and immediates no longer have different parsing rules. The difference is now solely down to whether evaluateAsAbsolute() succeeds.
  • %hi(%neg(%gp_rel(x))) are no longer parsed as a single operator and decomposed into the three MipsMCExpr nodes. They are parsed directly as three MipsMCExpr nodes.
    • parseMemOperand no longer needs to eat all the surrounding parenthesis to get at the outermost operator to make this work
  • %hi(%neg(%gp_rel(x))) and %lo(%neg(%gp_rel(x))) are no longer the only 3-in-1 relocs that parse for N64. They're still the only combinations that are permitted in relocatable expressions though. Fixing that should be a later patch.
  • We no longer need to list all the tokens that can occur as the first token of an expression or immediate.

test/MC/Mips/expr1.s:

This change also prevents the incorrect lowering of %lo(2*4)+foo to
%lo(8+foo) which is not an equivalent expression (the difference is
whether foo is truncated to 16-bit or not) and the test has been
updated to account for the macro expansion the correct expression requires.

Diff Detail

Event Timeline

dsanders updated this revision to Diff 66630.Aug 3 2016, 2:28 AM
dsanders retitled this revision from to [mips][ias] Fix all the hacks related to MIPS-specific unary operators (%hi/%lo/%gp_rel/etc.)..
dsanders updated this object.
dsanders added a reviewer: sdardis.
dsanders added a subscriber: llvm-commits.
sdardis accepted this revision.Aug 4 2016, 7:03 AM
sdardis edited edge metadata.

LGTM.

This revision is now accepted and ready to land.Aug 4 2016, 7:03 AM
dsanders closed this revision.Aug 8 2016, 2:28 AM